mv命令在bash脚本php中不起作用
我正在运行以下代码来运行bash命令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
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
bysh
/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
bysh
/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”)
;