在不向浏览器返回结果的情况下运行php-shell_exec


running php shell_exec WITHOUT returning results to browser?

好吧,我有权限做噩梦。。

我有/var/www/src/myshell.sh,它是可执行的

#!/bin/bash
echo "It's working" > /var/www/html/myshell.txt

这在CLI中运行良好,创建了包含"It’s working"文本的txt文件。

但是当我尝试从/var/www/html/test.php运行它时

<?php
$message=shell_exec("/var/www/src/myshell.sh 2>&1");
print_r($message);
?>

它在浏览器中返回以下内容:

/var/www/src/myshell.sh: line 3: /var/www/html/myshell.txt: Permission denied 

myshell.txt不是在/var/www/html 中创建的

昨晚我花了一整晚的时间,试图在SO和其他地方找到一切可能的方法来设置正确的权限,但都无济于事,所以我放弃了尝试,我想知道是否有可能在不向浏览器返回任何内容的情况下运行这个shell脚本,因为这似乎会导致权限错误。

所以基本上test.php启动了.sh脚本,然后忘记了它。无论如何,我打算在这里使用的进程都不需要发送回浏览器。

这可以通过不使用shell_exec而使用另一个php命令来实现吗?

非常感谢

apache用户没有在"/var/www/html/"上进行写操作的权限。

另外,创建另一个文件夹并设置写入权限,而不是在那里写入,比如"/var/www/html/var/",设置为该文件夹的写入权限,并将其用于任何动态内容。