私がやりたいことは、「domain1」の「file1.php」を「domain2」の「file2.php」に含めることです。だから私がやるべきだと思ったのは次のようなものです:
file2.php
require_once '/var/www/vhosts/domain1/httpdocs/file1.php';
しかし、これは私が本当に理解できない理由で機能しません。だから私がしたことは、自分のパスをインクルード パスに追加することでした。何かのようなもの:
file2.php
set_include_path(get_include_path() . PATH_SEPARATOR . "/var/www/vhosts/domain1/httpdocs");
require_once 'file1.php';
私がどこで間違っているのか、ヒントを教えてください。
ありがとう
更新 - いずれにしても、次のエラー メッセージが表示されます。
Fatal error: require() [function.require]: Failed opening required '/var/www/vhosts/domain1/httpdocs/file1.php' (include_path='.:/php/includes:/usr/share/pear/') in /var/www/vhosts/domain2/httpdocs/file2.php on line 4
また、セーフモードのオンとオフの両方でこれを試しました。
UPDATE2: また、テスト ファイルのアクセス許可を 777 に変更し、bash でインクルード ファイルへのパスを再確認しました。
解決策: 謎を解くことができました! 私のホスティング会社は Plesk を使用してドメインなどを管理しています。また、php.ini のエラー報告レベルは E_ALL ではありませんでした。エラー報告を E_ALL に設定すると、次のような警告が表示されました。
Warning: require() [function.require]: open_basedir restriction in effect.
そこで、/var/www/vhosts/domain2/conf/httpd.include に入り、open_basedir パスを編集しました。この設定ファイルはドメイン設定が変更されるたびに plesk によって書き換えられるため、これは永続的な解決策ではないことに注意してください。あなたがすべきことは、同じディレクトリにある「vhost.conf」ファイルを編集 (または作成) してから実行することです:
/usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=DOMAIN.TLD
これにより、ドメインの設定が再構成されますが、何らかの奇妙な理由で open_basedir では機能しません。document_root などの他のものを変更できますが、open_basedir は変更されませんが、それは別の問題です:D
解決策の最終: 同じ問題を抱えている人のために、ここで動作する最終的なコードを示します。これを /var/www/vhosts/domain2/conf/vhost.conf に追加しました (「/var/www/vhosts」を「/」または好きなものに変更できます):
<Directory /var/www/vhosts/DOMAIN.TLD/httpdocs>
<IfModule mod_php5.c>
php_admin_flag engine on
php_admin_flag safe_mode off
php_admin_value open_basedir "/var/www/vhosts"
</IfModule>
Options -Includes -ExecCGI
</Directory>
みんなありがとう!