php - 运行 php shell_exec 而不向浏览器返回结果?

标签 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 

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

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

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

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

非常感谢

最佳答案

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

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

关于php - 运行 php shell_exec 而不向浏览器返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28458064/

相关文章:

php - Bootstrap 注销链接

php - 通过将记录存储到数组中获取表中缺失的 ID,并使用 for 循环比较该组数字

linux - 带有重定向的 linux uniq 命令出错

Linux:提取文件的第一行

c++ - chdir() 返回 0,但在 chdir() 调用后的下一行中调试显示目录​​没有改变

php - CURL:发布表单并从 bash 获取数据

php - Uncaught Error : Class 'WindowsAzure\Common\ServicesBuilder' not found- MS Azure | PHP

linux - 如何使用 %F bash shell 检测文件内容中的日期

mysql - 如何更改自定义 vagrant box 的 php 和 mysql 设置

linux - 在 linux shell 脚本中传递参数和使用命名参数时避免位置引用