PHP和cURL在amazon EC2微型安裝12.04.2 LTS(GNU/Linux 3.2.0-40-虛擬x86_64)中的非webfacing目錄中工作正常。在www文件夾中的亞馬遜EC2中的PHP和cURL
我能夠使用捲曲在命令行中運行一些腳本:
#!/usr/bin/php
$command = '/absolute/path/to/running/process';
$url = 'http://example.com';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT , 400);
curl_setopt($ch, CURLOPT_TIMEOUT, 400);
$resp = json_decode(curl_exec($ch), 1);
$data1 = round($resp["data1"], 6);
$data2 = round ($resp["data2"], 2);
curl_close($ch);
$c = array(
'var1' => trim(shell_exec($command)),
'var2' => trim(shell_exec($command)),
'var3' => trim(shell_exec($command)),
'var4' => number_format($data1, 6, '.', ''),
'var5' => number_format($data2, 0, '.', ',')
);
var_dump($c);
這工作得很好。但是,只要我將相同的腳本放在面向網絡的目錄中(我明顯刪除#!/usr/bin/php
),就會加載頁面(我可以在最上面鍵入echo 'Hello World!'
,並在遠程計算機上查看瀏覽器上的文本) ,但該頁面完全空白,並在curl
結果爲空後添加echo
語句。如果我註釋掉curl
函數調用並嘗試簡單地執行該命令,它似乎不起作用(整個值的數組填充了NULL
或0
。)。
- 什麼發生在PHP?爲什麼cURL不會在/ var/www /文件夾中運行,而是在其他地方運行良好?我使用cURL將信息存儲到數據庫以從公共API獲取一些JSON。
- 爲什麼我不能像
shell_exec
那樣通過命令行使用PHP來運行腳本? - 儘管
error_reporting(E_ALL)
已設置,但錯誤仍未顯示在PHP中。我找不到錯誤日誌,通過使用找到error_log
或php.err
,我認爲這是PHP錯誤日誌的默認名稱。
我覺得這兩個問題可能有關,但我不明白爲什麼,也許權限?我注意到的一點是,我不能在不使用sudo
命令的情況下創建或修改此目錄中的文件,這種情況並不常見。
另一個說明:phpinfo()沒有提到cURL,但它在命令行上工作。我不知道爲什麼。
我複製了cli/php.ini文件中的所有設置,我似乎無法得到任何這些東西的工作。 – Joey
@Joey在更改後,apache上的phpinfo()會顯示'curl'嗎? –
不,它使我不知道它是如何在CLI上工作的 – Joey