shell_exec 不适用于查找
shell_exec doesn't work with find
我正在尝试在其他人创建的服务器上实施 php 脚本。
我尝试 echo shell_exec('ls');
并且有效。
var_dump(shell_exec('find / -name "tmp.txt"'));
returns 空。
但是,当我在 ssh 控制台中尝试时,输出是正确的。什么会导致它?我可以检查什么
您正试图在根目录中找到某些内容,您的 Web 服务器无权访问(按设计)- 您想要做的是安全问题,所以我的建议是将您的作品放在您网站内的一个文件夹中,该文件夹归允许访问您驱动器上文件的同一用户所有,通常为 www-data
.
也许你不想读取服务器本身的根目录,而只想读取与网站同目录下的一个文件。将 /
切换为 .
将访问当前目录,而不是基本目录:
var_dump(shell_exec('find . -name "tmp.txt"'));
或者,您可以尝试使用绝对路径:
var_dump(shell_exec('find /path/to/files -name "tmp.txt"'));
这并不常见,但您可能还需要指向 find
的绝对路径。您可以通过 运行 var_dump(shell_exec('find .'));
测试是否需要执行此操作,如果它没有输出,那么您可能不得不这样做。如果是这种情况,请改用 /usr/bin/find
。
Read more about how to set permissions
Apache: File and Directory Ownership and Permissions for Web Content
原因可能是缺少 PATH 环境变量。
请勾选getenv('PATH')
并尝试使用绝对路径查找。通常的位置是 /usr/bin/find 或 /bin/find.
var_dump(shell_exec('/usr/bin/find / -name "tmp.txt"'));
我正在尝试在其他人创建的服务器上实施 php 脚本。
我尝试 echo shell_exec('ls');
并且有效。
var_dump(shell_exec('find / -name "tmp.txt"'));
returns 空。 但是,当我在 ssh 控制台中尝试时,输出是正确的。什么会导致它?我可以检查什么
您正试图在根目录中找到某些内容,您的 Web 服务器无权访问(按设计)- 您想要做的是安全问题,所以我的建议是将您的作品放在您网站内的一个文件夹中,该文件夹归允许访问您驱动器上文件的同一用户所有,通常为 www-data
.
也许你不想读取服务器本身的根目录,而只想读取与网站同目录下的一个文件。将 /
切换为 .
将访问当前目录,而不是基本目录:
var_dump(shell_exec('find . -name "tmp.txt"'));
或者,您可以尝试使用绝对路径:
var_dump(shell_exec('find /path/to/files -name "tmp.txt"'));
这并不常见,但您可能还需要指向 find
的绝对路径。您可以通过 运行 var_dump(shell_exec('find .'));
测试是否需要执行此操作,如果它没有输出,那么您可能不得不这样做。如果是这种情况,请改用 /usr/bin/find
。
Read more about how to set permissions
Apache: File and Directory Ownership and Permissions for Web Content
原因可能是缺少 PATH 环境变量。
请勾选getenv('PATH')
并尝试使用绝对路径查找。通常的位置是 /usr/bin/find 或 /bin/find.
var_dump(shell_exec('/usr/bin/find / -name "tmp.txt"'));