樣品的PHP腳本是這樣的:PHP運行bash(.sh)腳本。 dpkg的--info作品,但沒有dpkg -i來
#!/usr/bin/php
$file = '/private/var/www/app/install.sh';
if(is_file($file)){
$output = shell_exec('bash /private/var/www/app/install.sh');
fwrite(STDOUT, $output."\n");
}
exit(0);
install.sh例
#!/bin/bash
clear
echo "Executing Install Script..."
dpkg --info /private/var/www/app/app.deb
dpkg -i /private/var/www/app/app.deb
echo "Script Finished"
exit 0
這將打印出的dpkg導致數據--info,但它不會運行dpkg -i。它不打印任何錯誤,或任何東西...
此外,這是通過網絡瀏覽器執行。當腳本從終端運行時,它工作正常。但在網絡上,只有info命令被返回。
需要注意的是隻看到標準輸出。要看stderr,你需要重定向'shell_exec('bash /private/var/www/app/install.sh 2> &1');' – jsw 2011-04-26 07:42:41