![](/img/trans.png)
[英]Why does this PHP script with a shell_exec call run from the command line in Windows 10, but not the browser/localhost?
[英]php sudo shell_exec command runs from command line, but not from browser
我正在用php-fpm運行lighttpd。 我已將http用戶添加為我的sudoers,作為nopasswd sudoer。 我有以下腳本:
<?php
echo shell_exec("sudo sh -c 'echo \"wtf3\" > /etc/openvpn/auth.txt'");
?>
當我這樣做時,它運行正常:
sudo -u http php testsudo.php
但是在通過瀏覽器運行時失敗。
shell_exec("whoami");
在瀏覽器中確認我是用戶http。
是什么賦予了?
制作一個可以運行您的命令的shell腳本是不可能的嗎?
#!/bin/sh
sudo whoami
在PHP中:
$retVal = `/path/to/custom/script/myscript.sh &2>1`;
if ($retVal) echo 'SWEET';
else echo 'POOP: ' . $retVal;
{command}
表示與Linux服務器上的shell_exec('{command}')
相同。 如果我在這里還算不錯,那么您的目標是將用戶添加到您的VPN中(也許還有其他方法),在這種情況下,您可以將用戶名/密碼/ etc的命令行參數傳遞給自定義外殼腳本。
這並非完全是您的問題的純shell_exec()
答案,但是也許您無需執行sudo即可運行myscript.sh
。 僅基於以下事實:您說過您嘗試在shell中運行的所有內容都在echo $PATH
設置,但sudo echo $PATH
在PHP腳本中設置sudo echo $PATH
。 出於某種原因,似乎sudo是php中的問題,而不是shell中的問題,所以...將sudo移回shell並以這種方式嘗試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.