Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mv命令在bash脚本php中不起作用_Php_Linux_Bash - Fatal编程技术网

mv命令在bash脚本php中不起作用

mv命令在bash脚本php中不起作用,php,linux,bash,Php,Linux,Bash,我正在运行以下代码来运行bash命令 shell_exec("sudo sh script.sh $conf_file"); $config_文件保存的值为,例如abc.conf 在my script.sh文件中 #!/bin/bash mv $1 /etc/apache2/sites-available/ 我还允许www数据用户通过进入sudo visudo使用sudo而无需密码,并在最后添加了以下行 www-data ALL=NOPASSWD: /var/www/html/myapp/s

我正在运行以下代码来运行bash命令

shell_exec("sudo sh script.sh $conf_file");
$config_文件
保存的值为,例如
abc.conf

在my script.sh文件中

#!/bin/bash
mv $1 /etc/apache2/sites-available/
我还允许www数据用户通过进入
sudo visudo
使用sudo而无需密码,并在最后添加了以下行

www-data ALL=NOPASSWD: /var/www/html/myapp/script.sh

您正在运行sudo的
sh
,而不是
/var/www/html/myapp/script.sh
one。同样奇怪的是,当脚本以第
#行开头时,为什么运行
script.sh
by
sh
/bin/bash
。只需将
shell\u exec
更改为:

shell_exec("sudo /var/www/html/myapp/script.sh $conf_file");

您正在运行sudo的
sh
,而不是
/var/www/html/myapp/script.sh
one。同样奇怪的是,当脚本以第
#行开头时,为什么运行
script.sh
by
sh
/bin/bash
。只需将
shell\u exec
更改为:

shell_exec("sudo /var/www/html/myapp/script.sh $conf_file");


注意,您正在授予执行操作的权限
/var/www/html/myapp/script.sh
,而您正在运行
sh script.sh
。因此,我在同一目录中调用该php代码。它最终是相同的路径?它是相同的路径,但是sudoers检查精确的字符串,因此您必须编写完整的路径。因此,如果我在visudo中只编写
script.sh
,那么它将工作吗?首先,您应该确保
www data
能够从命令行运行命令,这样您就可以确保sudoers定义良好。如果是,请查看如何在php文件中实现它。注意,您正在授予执行操作的权限
/var/www/html/myapp/script.sh
,而您正在运行
sh script.sh
。因此,我在同一目录中调用该php代码。它最终是相同的路径?它是相同的路径,但是sudoers检查精确的字符串,因此您必须编写完整的路径。因此,如果我在visudo中只编写
script.sh
,那么它将工作吗?首先,您应该确保
www data
能够从命令行运行命令,这样您就可以确保sudoers定义良好。如果是,请查看如何在php文件中实现它。完整路径(或至少是相对路径)对于
sudo
和脚本的实际查找,这里可能都需要。您的脚本是否设置了执行位?我不知道这一点,您能告诉我如何设置或任何链接吗?我确实尝试过使用chmod+x myscript.sh,但是如果从脚本中删除
sh
,则
shell_exec
不起作用没有sh,但如果我预先使用它编写sudo,它将无法工作
echo shell_exec(“/var/www/html/myapp/script.sh$conf_file”)
;完整路径(或至少相对路径)对于
sudo
和脚本的实际查找,这里可能都需要。您的脚本是否设置了执行位?我不知道这一点,您能告诉我如何设置或任何链接吗?我确实尝试过使用chmod+x myscript.sh,但是如果从脚本中删除
sh
,则
shell_exec
不起作用没有sh,但如果我预先使用它编写sudo,它将无法工作
echo shell_exec(“/var/www/html/myapp/script.sh$conf_file”)