好的,我有一个有权限的噩梦..
我有 /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命令来实现吗?
非常感谢
答案 0 :(得分:1)
apache用户无权写入&#34; / var / www / html /&#34;。
而不是在那里写,创建另一个文件夹并设置写入权限,例如&#34; / var / www / html / var /&#34;,设置为该文件夹写入权限并将其用于任何动态内容。