Возникло желание подключить библиотеку jpgraph - директорию убрал в "/lib/php", прописал путь в "Панель управления > Веб-службы" - не находит. Подскажите, пожалуйста, где лучше размещать общедоступные библиотеки php.
Возникло желание подключить библиотеку jpgraph - директорию убрал в "/lib/php", прописал путь в "Панель управления > Веб-службы" - не находит. Подскажите, пожалуйста, где лучше размещать общедоступные библиотеки php.
Возникло желание подключить библиотеку jpgraph - директорию убрал в "/lib/php", прописал путь в "Панель управления > Веб-службы" - не находит. Подскажите, пожалуйста, где лучше размещать общедоступные библиотеки php.
/lib/php/extensions
и подключить в /usr/syno/etc/php/extensions.ini
/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 - в третьей... Куда правильно?
С расширениями понятно. Я немного не об этом. Библиотека 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);
?>
Что-то, уважаемый, вы ересь какую-то несете. Сами ответили на вопрос и сами же запутались.К примеру, сайт у вас лежит в папке "/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, я, тем самым, не запрещаю самостоятельный запуск составляющих ее скриптов (по прямым ссылкам). Абсолютно не хочется этого делать не потому, что жадный такой, а потому, что это неправильно и некрасиво. Вот и решил узнать существует ли отработанный "правильный" вариант или придется изобретать велосипед.
Допустим сайт у меня лежит в папке "/volume1/web/site1", а я, также, хочу подключать эту библиотеку к скрипту, который лежит в папке "/volume1/web/site2".
Что вам мешает положить одни и теже скрипты в два каталога с двумя разными сайтами?
Не трогайте ни php.ini, ни extensions. Положите скрипты в каталог с сайтом, используйте функцию include и почитайте про относительные и абсолютные пути.
Также, выкладывая библиотеку в директорию web, я, тем самым, не запрещаю самостоятельный запуск составляющих ее скриптов (по прямым ссылкам)
Если хотите запретить, используйте .htaccess
На всякий случай:
1. Поместил библиотеку в каталог "/usr/syno/php/lib/php/jpgraph" (определяется из значения $include_path)
2. Добавил этот путь в open_basedir
-------
Подключаю директивами:
require_once ('jpgraph/jpgraph.php');
require_once ('jpgraph/jpgraph_line.php');
Все превосходно работает из любого места - не надо плодить лишние копии библиотеки
Все превосходно работает из любого места - не надо плодить лишние копии библиотеки
Ждем теперь еще два топика:
"Не загружаются файлы средствами php. Почему?" и "После переноса на хостинг сайт не работает".
Ждем теперь еще два топика:"Не загружаются файлы средствами 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 ?