2015-10-06 109 views
-1

我正在嘗試使用PHP腳本來調用shell腳本並將輸出結果輸出到瀏覽器。chdir在PHP腳本中調用shell腳本的問題

我已確認所有權限設置都設置正確,PHP和bash腳本都具有完全控制權。

如果我在當前目錄(與PHP文件相同的目錄)中運行shell腳本,那麼它工作正常。但是,如果我嘗試從/some/other/directory/shell.script運行shell腳本,那麼它不起作用。這是爲什麼?

我試圖chdir()到其他目錄,但運行getcwd()後,它從來沒有改變目錄。

我也嘗試了exec命令本身,它不起作用。 SHELL腳本

<?php error_reporting(E_ALL); ini_set('display_errors',1); 

echo "<h1>EDS Count Report</h1><p>"; 

$output=shell_exec('cd /app/script/catalog/ && ./EDScount_report.sh'); 
echo $output; 
?> 

內容:

+0

你確定沒有安裝CHROOT之類的軟件嗎? open_basedir也可能會限制文件系統的訪問。 –

+0

在打開PHP標記後立即在您的文件頂部添加錯誤報告,例如'<?php error_reporting(E_ALL); ini_set('display_errors',1); '然後你的代碼的其餘部分,看看它是否產生任何東西。 –

+0

我在頭文件中添加了它,但它仍然沒有顯示任何錯誤消息。當我嘗試從命令行運行php文件時,出現以下錯誤: 'builder @ ae-prod-lxb101:/ build2/php/dev> ./phpfile.php4 ./phpfile.php4:line 1:語法錯誤附近的意想不到的令牌'''' ./phpfile.php4:第1行:'<?php error_reporting(E_ALL); ini_set('display_errors',1);'' – astra

回答

1

試試這個請

<?php 
$output=shell_exec('sh /path/to/otherdirectory/shellscript.sh'); 
echo $output; 
?> 

如果你確定,你可以訪問dicertory,你也可以使用這樣的:

<?php 
    $output=shell_exec('cd /path/to/otherdirectory/ && ./shellscript.sh'); 
    echo $output; 
    ?> 
+0

不幸的是 – astra

+0

爲什麼這下來投票?我似乎還不能解決這個問題。 – astra