Функция set_include_path не работает, PHP 5.2.13 - PullRequest
0 голосов
/ 01 декабря 2011

Мы используем сервер 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';

1 Ответ

0 голосов
/ 15 января 2012

Я делаю это из памяти, так что это может быть не совсем правильно, но я думаю, что вы путаете разделитель пути и каталога. Может также быть более хороший способ сделать это, чем то, что вы делаете (то есть собирать весь путь сразу). Попробуйте что-то вроде этого:

define('INSTALL_PATH', dirname(dirname(__FILE__)));</p> <p>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');

Обычно я немного сжимаю это с помощью взрыва, так как DIRECTORY_SEPARATOR настолько многословно:

...PATH_SEPARATOR . implode(DIRECTORY_SEPARATOR, Array(INSTALL_PATH, 'program', 'lib'));

Я думаю, что (что наиболее важно) изменив некоторые из ваших PATH на DIRECTORYs и (возможно) с помощью дополнительных вызовов get_include_path и set_include_path, он станет более читабельным, переносимым и просто может работать правильно.

...