我正在尝试从Bash Script
脚本执行一个简单的PHP
。我从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 script
无法写{ {1}}文件。
这是我的基本代码,首先是test.txt
:
PHP code
其次,<?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
答案 0 :(得分:2)
我相信您还必须更改txt文件的权限,以便apache(实际执行脚本的用户)能够写入。
使用public void DocumentCompleted(object sender, EventArgs e)
{
var browser = (sender as WebBrowser);
if (browser != null && browser.Document != null && browser.Document.Body != null)
{
var documentHtml = browser.Document.Body.InnerHtml;
browser.Document.Body.InnerHtml = Replacer.Replace(documentHtml);
}
}
并更改权限时要小心,传递不需要的变量很容易......
答案 1 :(得分:1)
当你说
时echo $var1 $var2 $var3 > ./test.txt
您将{1}将var1,var2和var3 echo
放入文件test.txt
中,该文件与运行它的脚本位于同一目录中。
因此,如果您在/var/www
,则echo $var1 $var2 $var3 > ./test.txt
与echo $var1 $var2 $var3 > /var/www/test.txt
相同。
您遇到的问题包括以下错误:
./ test_bash.sh:line 13:./ test.txt:Permission denied
这告诉您不允许您写入文件/var/www/test.txt
。为了能够这样做,请将写入权限更改为此文件,以便&#34;其他人&#34; (即用户www
或apache
)可以写入其中:
chmod o+w /var/www/test.txt
或者,或许更好,写入另一个目录。例如/tmp
。
最后,请注意it is recommendable to quote your vars。所以说得好:
echo "$var1 $var2 $var3" > test.txt
# ^ ^