php不扫描文件的相对路径

时间:2009-09-02 15:17:14

标签: php file glob

这是我目前的代码(我为我第一次尝试php而感到非常自豪)

<?php
$files = glob("/jobops/*.txt");
$indexcount = count($files);
sort($files);
print("<br>"+$indexcount+"<br>");
foreach ($files as &$file)
{
    print("<a href=\"$file\">$file</a><br>");
}
?>

问题是glob在根目录(此脚本所在的位置)再次正常工作但是当我将其指向特定文件夹时,它返回找到0个文件。

我已经从我的ftp客户端显示了一个屏幕抓取,显示了目录结构(下面)

所以我很困惑我在glob上做错了什么

www.markonsolutions.com/test.php是脚本所在的位置,如果单击它将返回找到的0个文件

alt text

4 个答案:

答案 0 :(得分:6)

"/jobops/*.txt"

* nix上的绝对路径,如果你想指向与你需要使用的php脚本在同一目录中的目录:

"jobops/*.txt"

这是一条相对路径。

答案 1 :(得分:3)

如上所述

  

“/ jobops / *。TXT”

是绝对路径,因为它以“ / ”(斜杠)开头

相对路径是不以斜杠开头的路径,所以

  

“jobops / *。TXT”

     

“./ jobops / *。TXT”

     

“../ jobops / *。TXT”

都是相对的......重点是:相对于什么?

在操作系统上,它与环境变量PATH中枚举的目录相关 (通常当前工作的dir是第一个列在这个变量中的dir,导致错误的猜测“jobops / * .txt”被引用到当前目录中的jabops目录!)

在PHP中,就是你的环境,最好总是使用绝对路径,当然这并不意味着硬编码。

我建议您执行以下操作:

dirname(__FILE__).'/jobops/*.txt'

如何正确使用PHP中的路径

答案 2 :(得分:2)

可能是这样的:

$files = glob($_SERVER['DOCUMENT_ROOT']."/jobops/*.txt");

答案 3 :(得分:1)

如果您是从网络服务器运行的?可能是Web服务器的用户和组设置不允许访问其他目录吗?这是权限问题吗?检查Web服务器的error_log和access_logs以获取线索。