使用php脚本编辑bash文件

使用php脚本编辑bash文件,php,linux,bash,Php,Linux,Bash,我一直在尝试使用phpshell_exec()运行bash脚本,在此之前,我想使用php脚本编辑bash变量。 我想在执行之前编辑editdns.sh文件中的域名、值、txtdata值 Bash脚本: #!bin/bash domainname="mydomain.com" value="mydomain.com." txtdata="test2348734" whmapi1 editzonerecord domain=$domainname line=24 name=$value class=

我一直在尝试使用php
shell_exec()
运行bash脚本,在此之前,我想使用php脚本编辑bash变量。 我想在执行之前编辑editdns.sh文件中的域名、值、txtdata值

Bash脚本:

#!bin/bash
domainname="mydomain.com"
value="mydomain.com."
txtdata="test2348734"
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata

不需要为此编辑bash。 不要对变量使用静态值。您可以通过命令行将参数传递给bash

#!bin/bash
domainname=$1
value=$2
txtdata=$3
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata
更好的代码:

#!bin/bash
whmapi1 editzonerecord domain=$1 line=24 name=$2 class=IN ttl=14400 type=TXT txtdata=$3
因此,您必须使用以下方法运行它:

$myresults=shell_exec("editdns.sh mydomain.com mydomain.com. test2348734");
在执行之前,请更改到正确的路径

$pathkeep = getcwd();  //keep the currect
chdir('/mypath/');    //change to the script path
$data = shell_exec('./editdns.sh var1 var2');    //excecute script
chdir($pathkeep );    //return to prev path

我建议更改shell脚本以接受命令行参数:

#!bin/bash
domainname=$1
value=$2
txtdata=$3
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata
$salida = shell_exec('/path/to/script.sh mydomain.com mydomain.com. test2348734');
然后使用所需参数从PHP调用脚本:

#!bin/bash
domainname=$1
value=$2
txtdata=$3
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata
$salida = shell_exec('/path/to/script.sh mydomain.com mydomain.com. test2348734');

希望这有帮助

不要更改脚本,这可能会造成一些问题或安全问题。您可以在bash脚本和php调用bash命令中使用以下参数读取参数:

#!bin/bash
domainname=$1 # <-- you can validate input here or in php
value=$2 # <-- you can validate input
txtdata=$3 # <-- you can validate input
whmapi1 editzonerecord domain=$domainname line=24 name=$value class=IN ttl=14400 type=TXT txtdata=$txtdata


$data=shell_exec('/tmp/editdns.sh mydomain.com mydomain.com.test2348734');打印(数据)返回空白页$data=shell_exec('/tmp/editdns.sh mydomain.com mydomain.com.test2348734');打印(数据);它返回空白页如果手动执行bash,您会得到什么?是的,我在命令行中手动执行。它返回了预期的响应,并正确更新了记录。当通过PHP文件执行时,它不会返回任何内容,也不会更新TXT记录。文件权限也设置正确请参见我的答案底部问题是“whmapi1”命令仅以sudo用户身份运行。我尝试了这个
sudo-whmapi1-editzonerecord-domain=$1 line=24 name=$2 class=IN ttl=14400 type=TXT txtdata=$3
它在命令行中工作,但在bash文件中不工作。