我想使用php exec函数列出特定目录的文件。我用过这个
exec('ls /home/vikas/hft/a5/traders/sa/*.bin', $NameOfBinaries);列出/home/vikas/hft/a5/traders/sa/目录中的bin文件的代码。当我在CLI模式下运行脚本时,它工作得很好,但是当我在浏览器中运行时,它返回空数组。
发布于 2011-06-27 20:32:19
Apache可能没有权限读取您的主目录中的文件。
为什么不将这些文件移动到Apache可以看到的地方,并使用PHP的readdir()函数呢?
http://php.net/manual/en/function.readdir.php
发布于 2011-06-27 20:32:26
确保用户帐户-- read服务器运行时使用的帐户--具有读取该目录的权限。
发布于 2011-06-27 20:34:02
您可以改用glob() PHP函数,启用错误报告并在出现第一个错误时停止,如下所示:
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以上的版本。
此外,这似乎是权限问题,所以您可以检查您是否拥有对目录的正确访问权限:
$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中,User和Group指令分别包含运行Apache的用户名和组名。
如果您无法访问服务器配置,则应联系您的系统管理员,以获取该目录的读取权限。一种不太安全的选择是将该目录(通过FTP或shell)设置为“全球可读”。
https://stackoverflow.com/questions/6492847
复制相似问题