1

Plesk が管理する Web サーバーに PHP をインストールしています。PHP の include_path に問題があり、絶対パスに絞り込んで明らかに機能していません。

したがって、ディレクトリのリストを作成しようとすると、次のように動作します。

echo "<h3>Directory listing of .</h3>";
foreach (new DirectoryIterator('.') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
};

しかし、これは出力を与えません。(そこにファイルがあります)。

echo "<h3>Directory listing of /var/www</h3>";
foreach (new DirectoryIterator('/var/www') as $fileInfo) {
    if($fileInfo->isDot()) continue;
    echo $fileInfo->getFilename() . "<br>\n";
};

出力:

Directory listing of .
.htaccess
index.php
try.php

Directory listing of /var/www

何か案は?

4

2 に答える 2

2

これがマルチサイト サーバーのセットアップである場合、これは正常な動作である可能性があります。Plesk (またはシステムの他の部分) は、PHP インスタンスを現在のサイトに限定し、一般的なvar/wwwディレクトリをのぞき見ることを許可しません。

PHP はどのユーザーとして実行されていますか? そのユーザーは /var/www にアクセスする権利を持っていますか?

于 2010-01-11T17:26:22.480 に答える
1

Plesk は、httpd.confインクルードに次のような変数を追加します。

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/

そのため、ロック httpdocs および/tmpから親フォルダーを一覧表示することはできません。root ssh アカウントを使用して、設定ファイルにマニュアルを追加できます。

/var/www/vhosts/_your_domain_/config/にあるサイトの httpd 構成ファイルを編集します_httpd.include (Plesk 10 はタイムスタンプで変化する動的な名前です)。

そこで、 php_admin_value open_basedirを検索し、: セパレーターを使用してアクセスしたいフォルダーを追加できます。お気に入り:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/:/var/www

ただし、 /usr/share/pearフォルダなど、すべての Web サイトにフォルダ アクセスを追加する場合は、plesk パネル ファイルを編集する必要があります。

/usr/local/psa/admin/conf/templates/default/service/php.phpを編集し、次のように変更します。

echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";

に:

echo "php_admin_value open_basedir {$OPT['dir']}/:/usr/share/pear/:/tmp/\n";

フォルダーへのすべての Web サイトへのアクセスを許可することを忘れないでください。サーバーのセキュリティが破られる可能性があります。ご自身の責任で行ってください。また、plesk が更新されると、変更が消去されることに注意してください。

于 2011-02-03T18:23:15.683 に答える