Php 壳牌执行董事不';我不能和find一起工作
我正在尝试在其他人创建的服务器上实现php脚本。 我尝试Php 壳牌执行董事不';我不能和find一起工作,php,linux,shell-exec,Php,Linux,Shell Exec,我正在尝试在其他人创建的服务器上实现php脚本。 我尝试echo shell_exec('ls')并且它可以工作 var_dump(shell_exec('find / -name "tmp.txt"')); 返回null。 但是,当我在ssh控制台中尝试时,输出是正确的。是什么引起的?我可以检查什么?如果您试图在根目录中查找某个web服务器没有权限访问(设计上)的内容,您想做的是一个安全问题,因此我的建议是将您的工作放在网站中的一个文件夹中,该文件夹由允许访问驱动器上文件的同一用户所有,通常
echo shell_exec('ls')代码>并且它可以工作
var_dump(shell_exec('find / -name "tmp.txt"'));
返回null。
但是,当我在ssh控制台中尝试时,输出是正确的。是什么引起的?我可以检查什么?如果您试图在根目录中查找某个web服务器没有权限访问(设计上)的内容,您想做的是一个安全问题,因此我的建议是将您的工作放在网站中的一个文件夹中,该文件夹由允许访问驱动器上文件的同一用户所有,通常www数据
也许您不想读取服务器本身的根目录,而只想读取与网站位于同一目录中的文件。为
关闭
将访问当前目录,而不是基本目录:
var_dump(shell_exec('find . -name "tmp.txt"'));
或者,您可以尝试绝对路径:
var_dump(shell_exec('find /path/to/files -name "tmp.txt"'));
这是不常见的,但是您可能还需要指向find
的绝对路径。您可以通过运行var\u dump(shell\u exec('find'))来测试是否需要这样做代码>如果没有输出,那么您可能不得不这样做。如果是这种情况,请使用/usr/bin/find
原因可能是缺少PATH环境变量
请检查getenv('PATH')
并尝试使用绝对路径来查找。通常的位置是/usr/bin/find或/bin/find
var_dump(shell_exec('/usr/bin/find / -name "tmp.txt"'));
您使用的是什么web服务器?Apache?是的,我使用的是web服务器Apache。当您尝试var_dump(shell_exec('find.-name*.php'))时,是否得到任何结果?确保php用户可以使用“查找”。您可能会遇到其他问题:1)查找可能无法通过php访问您的脚本2)从根文件夹“/”进行递归搜索可能需要比最大脚本执行时间更长的时间time@SergeyScopin如果您需要更多帮助,请告诉我们:-)事实上,我刚刚更改了root(/)到某个目录,它现在可以工作了。