2013-03-11 164 views
2

我試圖執行exec命令,我有問題。當我運行下面的代碼時,它在我通過瀏覽器運行時不起作用。但如果我把$str的輸出複製並粘貼到終端中,它工作得很好。什麼會造成這種情況,我該如何解決它?目前我正在運行localhostPHP腳本工作在終端,但不是瀏覽器

$php_location = "/usr/bin/php"; 
$data = str_replace("\"", "\\\"", json_encode($_POST)); 
$cwd = __DIR__; 

shell_exec($str = "$php_locataion $cwd/phpExcel.php \"$data\" > /home/ryannaddy/Desktop/phpExcel.txt &"); 

echo $str; 

這裏是文件shell_exec呼籲:

<?php 
set_time_limit(0); 
$args = $argv[1]; 

$data = json_decode(str_replace("\\\"", "\"", $args), true); 
echo "hello!"; 

回答

4

當你通過瀏覽器運行,它執行的用戶誰可能沒有正確的權限Web服務器。當你在終端中運行它時,它會以你登錄的用戶身份執行。檢查apache(假設你使用apache)用戶對腳本/目錄具有正確的權限。

+0

如果我做'頂部'它說Apache是​​作爲'root'運行的 – 2013-03-11 15:00:50

+0

基本上apache沒有寫入到我的桌面的權限,所以我告訴它寫給我的網站目錄。謝謝! – 2013-03-11 15:20:30

2

該問題可能與權限有關。

當您從shell運行某些東西時,它會在您的用戶帳戶下運行。 Web服務器將以不同的方式運行,通常只有很少的權限。請給Web服務器的帳戶適當的權限,或者在不同的帳戶下運行服務器(不推薦!)。

相關問題