我想使用php exec函数列出特定目录的列表文件。我用过这个
exec('ls /home/vikas/hft/a5/traders/sa/*.bin', $NameOfBinaries);
用于列出/home/vikas/hft/a5/traders/sa/
目录中的bin文件的代码。当我在CLI模式下运行脚本时它工作正常,但是当我在浏览器中运行它返回空数组时。
答案 0 :(得分:1)
Apache可能无权读取您主目录中的文件。
为什么不将文件移动到Apache可以看到的地方并使用PHP的readdir()函数?
答案 1 :(得分:1)
确保网络服务器运行的用户帐户有权读取该目录。
答案 2 :(得分:1)
您可以使用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以上的PHP版本。
此外,这似乎是一个权限问题,因此您可以检查您是否拥有该目录的正确访问权限:
$handle = fopen("/home/vikas/hft/a5/traders/sa/", "r");
echo ($handle===false)? "Readable dir":"Unreadable dir";
反过来,这是由于PHP Web服务器和命令行二进制文件运行的不同用户,即从命令行运行时,PHP继承了当前登录用户的权限,而从Web运行时,它继承了来自网络服务器的用户权限(Apache / ISS或其他)。
为了能够读取该dir(从Web运行时),必须在该目录上设置适当的权限。它必须是从运行Web服务器的用户或组中读取的。
如果您有Apache服务器,则在httpd.conf中User
和Group
指令分别包含Apache将运行的用户名和组名。
如果您无法访问服务器配置,则应与系统管理员联系,询问该目录的读取权限。一个不太安全的选择是将该目录(通过FTP或shell)设置为“世界可读”。
答案 3 :(得分:0)
不要为此使用外部函数,而是使用内置的PHP directory functions。
答案 4 :(得分:0)