运行 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 中运行良好,创建的 txt 文件包含 "It's working" 文本。

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

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

在浏览器中return如下:

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

并且 myshell.txt 不是在 /var/www/html

中创建的

我昨晚整晚都在尝试我可以在 SO 和其他地方找到的所有可能的方法来设置正确的权限但无济于事所以我放弃了尝试弄清楚它并想知道它是否可能运行 这个 shell 脚本没有尝试 return 浏览器的任何东西,因为这似乎导致了权限错误。

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

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

非常感谢

apache 用户没有权限写入“/var/www/html/”。

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