簡體   English   中英

PHP Bash腳本調用另一個Bash腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM