首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >apache中的文件列表问题

apache中的文件列表问题
EN

Stack Overflow用户
提问于 2011-06-27 20:29:08
回答 5查看 94关注 0票数 0

我想使用php exec函数列出特定目录的文件。我用过这个

代码语言:javascript
复制
exec('ls /home/vikas/hft/a5/traders/sa/*.bin', $NameOfBinaries);

列出/home/vikas/hft/a5/traders/sa/目录中的bin文件的代码。当我在CLI模式下运行脚本时,它工作得很好,但是当我在浏览器中运行时,它返回空数组。

EN

回答 5

Stack Overflow用户

发布于 2011-06-27 20:32:19

Apache可能没有权限读取您的主目录中的文件。

为什么不将这些文件移动到Apache可以看到的地方,并使用PHP的readdir()函数呢?

http://php.net/manual/en/function.readdir.php

票数 1
EN

Stack Overflow用户

发布于 2011-06-27 20:32:26

确保用户帐户-- read服务器运行时使用的帐户--具有读取该目录的权限。

票数 1
EN

Stack Overflow用户

发布于 2011-06-27 20:34:02

您可以改用glob() PHP函数,启用错误报告并在出现第一个错误时停止,如下所示:

代码语言:javascript
复制
error_reporting(E_ALL);
ini_set('display_errors',1);
ini_set('display_startup_errors',1); // This is not necessary, but can add info
$nameOfBinaries = glob( '/home/vikas/hft/a5/traders/sa/*.bin', GLOB_ERR );

请注意:GLOB_ERR标志只适用于5.1.0以上的版本。

此外,这似乎是权限问题,所以您可以检查您是否拥有对目录的正确访问权限:

代码语言:javascript
复制
$handle = fopen("/home/vikas/hft/a5/traders/sa/", "r");
echo ($handle===false)? "Readable dir":"Unreadable dir";

反过来,这是由于运行PHP web服务器和命令行二进制文件的不同用户造成的,即当从命令行运行时,PHP从当前登录的用户继承权限,而当从web运行时,它从web服务器(Apache/ISS或其他)继承用户权限。

为了能够读取该目录(当从web运行时),必须在该目录上设置适当的权限。它必须可从运行user服务器的用户或组读取。

如果您有一台Apache服务器,在httpd.conf中,UserGroup指令分别包含运行Apache的用户名和组名。

如果您无法访问服务器配置,则应联系您的系统管理员,以获取该目录的读取权限。一种不太安全的选择是将该目录(通过FTP或shell)设置为“全球可读”。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6492847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档