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 帐户在配置文件中手动添加。

从您的站点编辑 httpd 配置文件:/var/www/vhosts/_your_domain_/config/ _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文件夹,则需要编辑 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";

记住这将使所有网站都可以访问该文件夹,这可能会破坏服务器的安全性。风险自负。并且请记住,如果 plesk 得到更新,将删除您的更改。

于 2011-02-03T18:23:15.683 回答