php - shell_exec 不适用于 find

标签 php linux shell-exec

我正在尝试在其他人创建的服务器上执行 php 脚本。 我尝试了 echo shell_exec('ls'); 并且成功了。

var_dump(shell_exec('find / -name "tmp.txt"'));

返回空值。 但是,当我在 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

关于php - shell_exec 不适用于 find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33857070/

相关文章:

c - 服务创建socket失败怎么办?

linux - UNIX 套接字魔法。推荐用于高性能应用?

bash - 任何地方都有 'if' 开关列表吗?

php - 通过 php shell_exec 执行 bash 脚本的权限错误

linux - Linux 的 alarm() 是如何被内核处理的

CENTOS 7 上的 php shell_exec sudo

php - PHP 文件中 PostgreSQL/PostGIS 查询中的变量

php - 如何在另一个 php.ini 文件中包含一个 php.ini 文件?

php - Linux 上的 CakePHP 3 和 MSSQL 连接失败

php - MySQL:查询没有返回结果时出错?