synology.forum архив спільноти · 2005–2022
ai.synology.forum →
ГлавнаяВеб Сервер + PHP / MySQL › куда класть библиотеки php?

куда класть библиотеки php?

Nibbler · 27.01.2013

Возникло желание подключить библиотеку jpgraph - директорию убрал в "/lib/php", прописал путь в "Панель управления > Веб-службы" - не находит. Подскажите, пожалуйста, где лучше размещать общедоступные библиотеки php.

Smoke74 · 28.01.2013
Возникло желание подключить библиотеку jpgraph - директорию убрал в "/lib/php", прописал путь в "Панель управления > Веб-службы" - не находит. Подскажите, пожалуйста, где лучше размещать общедоступные библиотеки php.

/lib/php/extensions

и подключить в /usr/syno/etc/php/extensions.ini

Nibbler · 28.01.2013
/lib/php/extensions

и подключить в /usr/syno/etc/php/extensions.ini

С расширениями понятно. Я немного не об этом. Библиотека jpgraph представляет собой каталог с .php файлами, которые, при необходимости я могу подключать директивами include или require_once. Например так:

require_once ("jpgraph/jpgraph.php");

require_once ("jpgraph/jpgraph_line.php");

Конечно, можно засунуть всю директорию в корень web, но тогда путь до файлов придется указывать от корня: "volume1/web/jpgraph/...php" да и не хотелось бы светить ее наружу без причины. В общем, насколько я понимаю, желательно положить ее в папку с системными файлами php, путь к которой определен в переменной $PATH. Но куда лучше - не знаю, поскольку на synology сам интерпретатор php лежит в одной папке, php.ini - в другой, extensions - в третьей... Куда правильно?

 

Smoke74 · 29.01.2013
С расширениями понятно. Я немного не об этом. Библиотека jpgraph представляет собой каталог с .php файлами, которые, при необходимости я могу подключать директивами include или require_once. Например так:

require_once ("jpgraph/jpgraph.php");

require_once ("jpgraph/jpgraph_line.php");

Конечно, можно засунуть всю директорию в корень web, но тогда путь до файлов придется указывать от корня: "volume1/web/jpgraph/...php" да и не хотелось бы светить ее наружу без причины. В общем, насколько я понимаю, желательно положить ее в папку с системными файлами php, путь к которой определен в переменной $PATH. Но куда лучше - не знаю, поскольку на synology сам интерпретатор php лежит в одной папке, php.ini - в другой, extensions - в третьей... Куда правильно?

Что-то, уважаемый, вы ересь какую-то несете. Сами ответили на вопрос и сами же запутались.

К примеру, сайт у вас лежит в папке "/volume1/web" копируете скрипты в папку "/volume1/web/jpgraph"

Подключение библиотеки (в примере php из корня сайта):

<?

include "./jpgraph/jpgraph.php";

include "./jpgraph/jpgraph_line.php";

?>

использование:

<?

$graph = new Graph(300, 200, «auto», 10, true);

?>

Nibbler · 29.01.2013
Что-то, уважаемый, вы ересь какую-то несете. Сами ответили на вопрос и сами же запутались.

К примеру, сайт у вас лежит в папке "/volume1/web" копируете скрипты в папку "/volume1/web/jpgraph"

Подключение библиотеки (в примере php из корня сайта):

<?

include "./jpgraph/jpgraph.php";

include "./jpgraph/jpgraph_line.php";

?>

использование:

<?

$graph = new Graph(300, 200, «auto», 10, true);

?>

Допустим сайт у меня лежит в папке "/volume1/web/site1", а я, также, хочу подключать эту библиотеку к скрипту, который лежит в папке "/volume1/web/site2". При этом есть резон убрать библиотеку в какой-либо из каталогов php и указать к ней путь в параметре include_path файла php.ini. В имеющемся php.ini я ни в каком виде (закомментированом/раскомментированном) этого параметра не нашел, к тому же, как можно видеть и extensions здесь тоже подключаются весьма специфично. Также, выкладывая библиотеку в директорию web, я, тем самым, не запрещаю самостоятельный запуск составляющих ее скриптов (по прямым ссылкам). Абсолютно не хочется этого делать не потому, что жадный такой, а потому, что это неправильно и некрасиво. Вот и решил узнать существует ли отработанный "правильный" вариант или придется изобретать велосипед.

Smoke74 · 30.01.2013
Допустим сайт у меня лежит в папке "/volume1/web/site1", а я, также, хочу подключать эту библиотеку к скрипту, который лежит в папке "/volume1/web/site2".

Что вам мешает положить одни и теже скрипты в два каталога с двумя разными сайтами?

Не трогайте ни php.ini, ни extensions. Положите скрипты в каталог с сайтом, используйте функцию include и почитайте про относительные и абсолютные пути.

 

Также, выкладывая библиотеку в директорию web, я, тем самым, не запрещаю самостоятельный запуск составляющих ее скриптов (по прямым ссылкам)

Если хотите запретить, используйте .htaccess

Nibbler · 31.01.2013

На всякий случай:

1. Поместил библиотеку в каталог "/usr/syno/php/lib/php/jpgraph" (определяется из значения $include_path)

2. Добавил этот путь в open_basedir

-------

Подключаю директивами:

require_once ('jpgraph/jpgraph.php');

require_once ('jpgraph/jpgraph_line.php');

Все превосходно работает из любого места - не надо плодить лишние копии библиотеки

Smoke74 · 31.01.2013
Все превосходно работает из любого места - не надо плодить лишние копии библиотеки

Ждем теперь еще два топика:

"Не загружаются файлы средствами php. Почему?" и "После переноса на хостинг сайт не работает".

Nibbler · 01.02.2013
Ждем теперь еще два топика:

"Не загружаются файлы средствами php. Почему?" и "После переноса на хостинг сайт не работает".

 

1. Файлы грузятся - проверил первым делом на PhotoStation (uploader.php)

2. Ничего переносить не надо - NAS используется в качестве "домашнего дата-центра", разгружая основной хостинг от черновой работы. Часть скриптов запускаются по крону с рутовыми правами и из соображений безопасности вообще не лежат в папке web. Второе назначение сервера - экспериментальная зона для отладки отдельных скриптов. Скриптов много, они разные, и я предпочитаю раскладывать их по отдельным папкам т.к к каждому скрипту идет масса рабочего материала.

 

Доводы в пользу моего выбора были следующие:

- Если бы я делал сайт, я бы конечно "упаковал" в него же и библиотеки, ну или, по крайней мере, не был бы таким идиотом, чтобы забыть про них при переносе на хостинг.

- В доке на jpgraph написано:

There are two ways of configuring the include path:

1.setting the include path in php.ini

include_path = <file-path>

2.adjusting the include path directly in the code by using the PHP command php_ini_set() at the top of the script

Я, как человек последовательный (да и потому, что мне так удобнее) решил пойти 1-м путем.

-----------

А теперь, раз уж Вы знаете что-то, чего не знаю я и поскольку Вы единственный мой собеседник на этой ветке, рискну задать вопросы:

В php.ini NAS-a по умолчанию есть закомментированная строка ;include_path = ".:/php/includes"

тем не менее, phpinfo() определяет include_path=".:/usr/syno/php/lib/php" - откуда он берется?

Зачем нужна строка ;include_path = ".:/php/includes" в php.ini ?