php - 无法从 PHP 执行 Bash 脚本

标签 php ajax html bash sudo

我正在尝试从 PHP 脚本执行一个简单的 Bash 脚本。我从 HTML5 前端页面收集数据,通过 ajax 传递给 PHP 脚本,获取变量,然后将这些传递给 .sh 脚本,但我收到如下消息:

./test_bash.sh: line 13: ./test.txt: Permission denied

我尝试更改权限 chmod 777 test_bash.sh,尝试修改 sudoers.d 文件,试过这个:shell_exec("echo password_for_the_user | sudo -S command_to_execute"); ... 但是 Bash 脚本 无法写入 test.txt 文件。

这是我的基本代码,首先是 PHP 代码:

<?php 
$var1 = json_decode($_POST['var1']); //from front-end html5
$var2 = json_decode($_POST['var2']);
$var3 = json_decode($_POST['var3']);

$response = shell_exec("./test_bash.sh $var1 $var2 $var3 2>&1");

echo "$response";
?>

其次,Bash 代码:

#!/bin/bash

var1=$1;
var2=$2;
var3=$3;

echo "$var1";
echo "$var2";
echo "$var3";

echo $var1 $var2 $var3 > ./test.txt

最佳答案

我相信您还必须更改 txt 文件的权限,以便 apache(实际执行脚本的用户)能够写入它。

虽然在使用 shell_exec() 和更改权限时要小心,但很容易传递不需要的变量...

关于php - 无法从 PHP 执行 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754553/

相关文章:

javascript - "The text content of element script was not in the required format: Expected space, tab, newline, or slash but found { instead."

php - 如何将数组内部指针设置到特定位置? PHP/XML

php - Apple 生产推送服务通知问题

php - 从 jquery timepicker 读取输入并将其传递给 php 脚本

javascript - Ajax - 跨域请求是否返回请求头?

html - 添加显示 : table-* to the CSS specification? 的可验证原因是什么

php - 使用 php 更新 json

php - 从 mysql 中获取列值包含两个字符串的数据

javascript - 重用 jQuery.post()/jQuery.Deferred() 对象

html - 如何在没有 JavaScript 的情况下设置 <option> 标签的样式?