2011-09-09 47 views
0

我有一個PHP腳本,它調用exec()。我一直在麻煩一些代碼調用相同的腳本工作,一些沒有(exec()返回127錯誤代碼)。PHP exec在直接調用腳本時工作,但不是由jQuery調用ajax

我終於摸索出不工作的代碼是一個正在從jQuery的叫我的網頁代碼:

$('#next_button').click(function(event) { 
    $.get('download_forms.php', function(data) { 
     alert(data); 
    }); 
}); 

不過,如果我對download_forms.php鍵入URL到地址欄我的瀏覽器,然後exec()將正確執行。我試圖運行其他腳本從jQuery調用exec()進行測試,並且它們都失敗了,但是如果輸入到地址欄中,則可以工作。

我不明白爲什麼這會是一個問題。無論我在Firefox的地址欄中輸入網址,還是按下網頁上的按鈕,都會發出HTTP請求。

有沒有人知道這種差異可能是什麼?

注意:我已經在exec()中嘗試了不同的命令,它們都從我的jQuery失敗(注意其餘的PHP代碼都運行正常),但是當腳本地址直接輸入到地址欄時工作。

非常感謝

更新

這是我的download_forms.php代碼。最初的exec()只是爲了查看exec()是否工作。如上所述,只有直接輸入地址欄才能正確執行。

include ('inc/session.inc.php'); 
require_once('Downloader.php'); 
exec('id', $output, $r); 
echo var_dump($output); 
echo($r); 
try { 
    $downloader = new Downloader(); 
    $saveMessages = $downloader->saveToDatabase(); 
    // exec() in the combineAndDownloadForms() method 
    $downloadMessages = $downloader->combineAndDownloadForms(); 
} catch(Exception $e) { 
    echo $e->getMessage(); 
} 

進一步更新

我通過由超鏈接從我的網頁給download_forms.php頁面(即<a>),但執行exec()仍然沒有執行。至少我知道這與ajax無關。

+0

這是一個有點模糊......你能嘗試安裝螢火蟲或使用某種類型的開發工具,看看你是否得到任何JavaScript錯誤? 'download_forms.php'看起來像什麼?你是否對ajax一無所知? –

+0

@ Derek-感謝您的回覆。我已更新我的文章以包含我的'download_forms.php'文件。我對阿賈克斯並不陌生,不。乾杯。 – Joe

+0

您確定AJAX中的網址位置正確嗎? download_forms.php與js文件的相對URL是什麼?此外,如果您使用Firebug或類似軟件,您應該能夠看到AJAX調用的請求/響應,這可能會讓您更深入地瞭解該問題。 –

回答

0

對於它的價值,我解決了這個問題,以上所有都是紅鯡魚。

我沒有注意到,我是在用安全https協議的頁面,所以當正在使用的download_forms.php腳本,也有人用https訪問,似乎exec()passthru()功能將無法執行在這種情況下服務器上的命令,這是有道理的。

我更改了腳本,以便它將download_forms.php url的協議更改爲普通http,現在它運行良好。

HTH

相關問題