функция set_include_path не работает, PHP 5.2.13
-
27-10-2019 - |
Вопрос
Мы используем VPS-сервер в нашей компании, и я пытаюсь установить веб-почтовый интерфейс Roundcube
Но я даже не могу перейти к этапу настройки, потому что функция set_include_path не работает, и скрипт не может найти необходимые файлы конфигурации.
Я получаю сообщение об ошибке типа "Фатальная ошибка, функция ini_set /set_include_path не работает".
Я предполагаю, что причиной этого являются какие-то настройки php, но я не знаю, какие именно.
Я был бы рад, если бы смог получить какую-нибудь помощь.
Заранее благодарю
//РЕДАКТИРОВАТЬ Вот коды из скрипта
ini_set('error_reporting', E_ALL&~E_NOTICE);
ini_set('display_errors', 1);
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/../').'/');
define('RCMAIL_CONFIG_DIR', INSTALL_PATH . 'config');
$include_path = INSTALL_PATH . 'program/lib' . PATH_SEPARATOR;
$include_path .= INSTALL_PATH . 'program' . PATH_SEPARATOR;
$include_path .= INSTALL_PATH . 'program/include' . PATH_SEPARATOR;
$include_path .= ini_get('include_path');
set_include_path($include_path);
require_once 'utils.php';
require_once 'main.inc';
Решение
Я делаю это по памяти, так что это может быть не совсем правильно, но я думаю, возможно, вы путаете разделители пути и каталогов.Также может быть более приятный способ сделать это, чем то, что вы делаете (т. е.сборка всего пути сразу).Попробуйте что-то вроде этого:
define('INSTALL_PATH', dirname(dirname(__FILE__)));
set_include_path(get_include_path() . PATH_SEPARATOR . INSTALL_PATH . DIRECTORY_SEPARATOR . 'program' . DIRECTORY_SEPARATOR . 'lib');
set_include_path(get_include_path() . PATH_SEPARATOR . INSTALL_PATH . DIRECTORY_SEPARATOR . 'program' . DIRECTORY_SEPARATOR . 'include');
set_include_path(get_include_path() . PATH_SEPARATOR . INSTALL_PATH . DIRECTORY_SEPARATOR . 'program');
Обычно я немного сжимаю это с помощью implode, поскольку DIRECTORY_SEPARATOR
это так многословно:
...PATH_SEPARATOR . implode(DIRECTORY_SEPARATOR, Array(INSTALL_PATH, 'program', 'lib'));
Я думаю, что (самое главное) изменив некоторые из ваших путей к DIRECTORYs и (возможно) используя инкрементный get_include_path
и set_include_path
таким образом, он будет более читабельным, переносимым и просто может работать должным образом.