PHP:为什么readdir在命令行为我工作但不是浏览器?

时间:2010-08-30 16:46:00

标签: php command-line permissions filesystems opendir

我有2个文件夹: /var/www/vhosts/mydomain.com/httpdocs/ 和 /var/www/vhosts/mydomain.com/httpdocs/duh /

两个文件夹都有完全相同的烫发,群组,所有者,一切。

如果我将$ path设置为第一个,没有问题,我会回显文件名中包含'html'的文件列表。

如果我将$ path设置为第二个,它会在opendir()上死掉。但是,它在命令行中工作正常,而不是浏览器。

有什么想法吗?

这是我非常简单的代码:

<?php
        $path = "/var/www/vhosts/mydomain.com/httpdocs/duh/";

        $img_folder = opendir($path) or die("Unable to open $path");

         while (false !== ($file = readdir($img_folder))){
             if (eregi("html", $file)){
                echo $file;
             }
         }
    ?>

3 个答案:

答案 0 :(得分:0)

duh文件夹有哪些权限?请记住,网络服务器将使用与您的shell帐户不同的用户ID运行。确保dir的模式为0755,以便所有用户都可以读取。

oops,只是您对错误消息的评论。所以,是的,权限错误。 duh由用户ID 10012拥有,而您的Web服务器以root身份运行。安全模式不允许这样。 'chown'由root拥有的目录......

当然,为什么网络服务器以root身份运行?那是非常不安全的。

答案 1 :(得分:0)

现在你知道答案了:它的SAFE_MODE是最丑陋的PHP功能之一 有一些解决方法,但其中最好的是尽可能快地从这台主机运行!
或找到一种方法来禁用它。

答案 2 :(得分:0)

我明白了。我正在处理的服务器具有每个vhost的本地配置文件。 safe_mode设置为on为本地conf。

感谢那些让我走上正轨的人。