2015-02-11 74 views
0

好的,我具有权限的噩梦..运行php shell_exec没有返回结果给浏览器?

我有/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); 
?> 

它返回在浏览器中执行以下操作:

/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命令,而不是?

非常感谢

回答

1

apache用户没有权限对 “在/ var/www/html等/” 写。

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

+0

你的先生是一个绝对的传奇人物。如果我昨晚知道这个简单的事实,它会救了我4小时拉我的头发!非常感谢! – Grant 2015-02-11 15:41:06

+0

好吧,现在正在工作,但它仍然显示在Web浏览器中sh输出的结果。我能压制结果吗?我根本不需要看到他们。 – Grant 2015-02-11 15:47:18

+0

请删除print_r($ message); print_r是一个“输出”函数,它在内部做类似echo $ var; – 2015-02-11 15:50:08