是否可以使用opendir和scandir扫描/home/目录。当我尝试执行脚本时,它显示权限被拒绝,我应该怎么做?
<?php
$dir = '/home/';
$dirs = scandir($dir);
?>
<pre>
<?php print_r($dirs); ?>
</pre>发布于 2011-08-25 18:35:24
您可以使用is_readable('/home/')查看您是否有权限。如果没有,则需要确保该目录具有读取权限,可能是0755 (rwxr-xr-x)
发布于 2011-08-25 18:34:58
为了安全起见,PHP定义了一个'basedir',在它下面你是不允许访问的。正如Aleks G所说,还需要考虑文件权限。
这个问题谈到了如何绕过basedir的限制:How can I relax PHP's open_basedir restriction?
汤姆·黑格的回答被复制到这里:
您也可以使用Apache (假设这是您的web服务器)配置文件(例如httpd.conf)在每个目录的基础上轻松完成此操作。
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>您还可以使用以下命令完全取消该限制
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>发布于 2011-08-25 18:35:24
我不是PHP程序员,但我认为您的问题是,当PHP尝试打开目录时,它使用与apache相同的用户ID运行,而apache可能没有权限读取您的/home目录。
您可以通过更改/home上的权限或将apache userid添加到拥有home的组所有权的任何组中来修复此问题。
这可能是Apache配置文件中的问题。即使文件系统权限允许,您的httpd.conf文件也可能不允许访问/home。如果您的所有HTML文件都在/var/www中,通常就会出现这种情况。
可以将httpd.conf设置为允许从用户的主目录中提供文件。在这种情况下,权限将被授予/home内的目录,而不是/home本身。
https://stackoverflow.com/questions/7188806
复制相似问题