set_include_path関数は機能しません、php 5.2.13
-
27-10-2019 - |
質問
当社でVPSサーバーを使用しています。RoundCubeWebmailインターフェイスをインストールしようとしています
ただし、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');
通常、私はこれを破裂して少し圧縮します。 DIRECTORY_SEPARATOR
とても冗長です:
...PATH_SEPARATOR . implode(DIRECTORY_SEPARATOR, Array(INSTALL_PATH, 'program', 'lib'));
私は(最も重要なことに)あなたのパスの一部をディレクトリに変更し、(おそらく)増分を使用していると思います get_include_path
と set_include_path
通話、それはより読みやすく、ポータブルであり、適切に機能する可能性があります。