0

社内で VPS サーバーを使用しており、Roundcube Web メール インターフェイスをインストールしようとしています。

しかし、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';
4

1 に答える 1

0

私はこれをメモリから行っているので、正しくないかもしれませんが、パスとディレクトリの区切り記号を混同している可能性があります。これを行うには、現在行っている方法よりも優れた方法がある場合もあります (つまり、パス全体を一度に組み立てます)。次のようなことを試してください:

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');

DIRECTORY_SEPARATOR非常に冗長なので、通常、これを implode で少し圧縮します。

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

(最も重要なことに) PATH の一部を DIRECTORY に変更し、(おそらく) インクリメンタルget_include_pathset_include_path呼び出しを使用すると、より読みやすく、移植性が高くなり、適切に機能する可能性があります。

于 2012-01-15T15:20:14.900 に答える