运行php shell_exec而不将结果返回给浏览器?

时间:2015-02-11 15:26:51

标签: php linux shell shell-exec

好的,我有一个有权限的噩梦..

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

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

这可以在CLI中正常工作,创建的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 

并且没有在/ var / www / html

中创建myshell.txt

昨晚我花了很多时间尝试在SO和其他地方找到的每一种可能的方式设置正确的权限都没有用,所以我放弃了试图找出它并想知道它是否&# 39;可以运行这个shell脚本而不试图将任何内容返回给浏览器,因为这似乎导致了权限错误。

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

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

非常感谢

1 个答案:

答案 0 :(得分:1)

apache用户无权写入&#34; / var / www / html /&#34;。

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