【问题标题】:PHP: Why is readdir working for me at command line but not browser?PHP:为什么 readdir 在命令行为我工作而不是浏览器?
【发布时间】:2010-08-30 16:46:00
【问题描述】:

我有 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;
             }
         }
    ?>

【问题讨论】:

  • 去掉@,你至少会看到它给出了什么错误,以防你不知道@抑制错误报告,这就是为什么你不知道原因是什么
  • 抱歉,我应该把它取下来的。我正在测试一些东西,它在这里成功了。我现在不使用它,我将编辑。
  • 那么它给出了什么错误? (除了“无法打开 $path”)
  • [2010 年 8 月 30 日星期一 13:02:50] [错误] [客户端] PHP 警告:opendir() [function.opendir] :安全模式限制生效。不允许 uid 为 0 的脚本访问第 4 行 /var/www/vhosts/mydomain.com/httpdocs/t.php 中 uid 10012 拥有的 /var/www/vhosts/mydomain.com/httpdocs/duh/ [2010 年 8 月 30 日星期一 13:02:50] [错误] [客户端] PHP 警告:opendir(/var/www/vhosts/mydomain.com/httpdocs/duh/) [function .opendir]:无法打开目录:第 4 行 /var/www/vhosts/mydomain.com/httpdocs/t.php 中设备的 ioctl 不合适
  • 我应该注意,根据我的 /etc/php.ini safe_mode = Off;

标签: php command-line permissions filesystems opendir


【解决方案1】:

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

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

当然,为什么网络服务器以 root 身份运行?这太不安全了。

【讨论】:

  • Perms 是 755,我什至将文件夹的所有者设置为网络服务器的 uid。
  • Webserver 作为 apache 运行。是什么让您认为它是以 root 身份运行的?
【解决方案2】:

现在你知道答案了:它的 SAFE_MODE,最丑陋的 PHP 功能之一。
有一些解决方法,但最好的方法是尽可能快地从该主机运行!
或者想办法禁用它。

【讨论】:

    【解决方案3】:

    我想通了。我正在处理的服务器具有每个虚拟主机的本地配置文件。本地 conf 的 safe_mode 设置为 on。

    感谢那些带领我走上这条路的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2014-02-11
      相关资源
      最近更新 更多