[英]PHP Bash Script calling another Bash script
我有一個bash腳本,它帶有一個參數,該參數在PHP中由shell_exec(script.sh parameter)調用。 基本上,我的目標是調用另一個不是Apache的用戶擁有的腳本。
script.sh腳本是一個包含以下內容的文件(現在有一些錯誤處理命令):
#/bin/bash
whoami>>whoami
echo $1 >> parameter
while read f; do
env>>envoutput
sudo -i -u archivescriptowner /path/to/archivescript.sh -command archive >> output
done < $1
在我的/ etc / sudoers文件中,我具有以下內容:
apache ALL=(archivescriptowner) NOPASSWD: /bin/bash -c /path/to/archivescript.sh *
當我通過運行su -s /bin/bash
apache並傳遞參數來運行此腳本時,它可以工作。
當我通過php中的按鈕運行它時,archivescript.sh無法執行
whoami文件已寫入apache
參數文件已寫入正確的文件
env顯示以下內容
Term=xterm
LD_LIBRARY_PATH=/path/to/library
PATH=/sbin/:usr/sbin:/bin:/usr/bin
PWD=/var/www/html
LANG=C
SHLVL=4
=/bin/env
PWD正在正確輸出,這就是我的腳本現在所在的位置,它將在將來移動。
單擊按鈕運行輸出文件時,該文件為空白。
我不知道為什么這不起作用。 任何見解都會有所幫助。 如果需要其他任何信息,請告訴我。
我最近發布了一個項目,該項目允許PHP獲取真正的Bash shell並與之交互。 在這里獲取它: https : //github.com/merlinthemagic/MTS
下載后,您只需使用以下代碼:
$shell = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1 = $shell->exeCmd('/path/to/archivescript.sh');
echo $return1; //return from your script
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.