【问题标题】:I'm having URL File-access errors when using OpenDir. Why?使用 OpenDir 时出现 URL 文件访问错误。为什么?
【发布时间】:2011-09-01 20:34:07
【问题描述】:
<?php

   $pathname = "http://myserver.com/projects/" . $_GET['project'] . "/"; 

   if ($handle = opendir($pathname)) {

        while (false !== ($file = readdir($handle))) {

          if ($file != "." && $file != ".." && (strpos($file, '.jpg',1))    ) {

            $photo= $pathname . $file;
            echo "<image src=\"" . $file . "\">";

          }
        }
        closedir($handle);
    } 
 ?>

这是我的代码。我要做的只是传递一个 URL 参数,如“project=Flowers”,然后让 PHP 打开一个名为 /flowers/ 的文件夹并返回其中的所有 .jpg 图像。

但是,当我运行我的代码时,我得到了这些错误:

**警告:opendir() [function.opendir]: URL 文件访问被禁用 在服务器配置中 /nfs/c01/h03/mnt/73283/domains/myserver.com/test.php 上 第 3 行

警告:opendir(http://myserver.com/projects/flowers/) [function.opendir]:无法打开目录:可能没有合适的包装器 在发现 /nfs/c05/h02/mnt/76383/domains/kulthouse.com/html/staging/work.php 上 第 3 行**

任何想法为什么这不起作用??

【问题讨论】:

    标签: php opendir


    【解决方案1】:

    任何想法为什么这不起作用??

    因为您正在使用 filesystem 函数来访问网络 URL

    所以,我会成功的

    $_SERVER['DOCUMENT_ROOT'].'/projects/'.basename($_GET['project']).'/'
    

    basename() 在这里很重要,不能让任何人浏览你磁盘上的任何目录

    【讨论】:

    • 所以我应该只使用相对路径..吗?如果我的 PHP 脚本位于完全不同的文件夹中,opendir 是否从网络服务器根目录开始?还是我需要做“../../projects”?
    • @Ninjection 如果我是你,我会使用 $_SERVER['DOCUMENT_ROOT'] 变量来标记文件系统路径与虚拟 Web 服务器目录系统相交的点。在答案中添加了代码。
    猜你喜欢
    • 2020-09-06
    • 2017-08-28
    • 2019-12-07
    • 1970-01-01
    • 2019-02-04
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多