2013-07-10 34 views
0

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函數調用並嘗試簡單地執行該命令,它似乎不起作用(整個值的數組填充了NULL0。)。

  • 什麼發生在PHP?爲什麼cURL不會在/ var/www /文件夾中運行,而是在其他地方運行良好?我使用cURL將信息存儲到數據庫以從公共API獲取一些JSON。
  • 爲什麼我不能像shell_exec那樣通過命令行使用PHP來運行腳本?
  • 儘管error_reporting(E_ALL)已設置,但錯誤仍未顯示在PHP中。我找不到錯誤日誌,通過使用找到error_logphp.err,我認爲這是PHP錯誤日誌的默認名稱。

我覺得這兩個問題可能有關,但我不明白爲什麼,也許權限?我注意到的一點是,我不能在不使用sudo命令的情況下創建或修改此目錄中的文件,這種情況並不常見。

另一個說明:phpinfo()沒有提到cURL,但它在命令行上工作。我不知道爲什麼。

回答

0

Ubuntu有單獨的命令行PHP和Apache2 PHP的php.ini文件。您在這些文件中的配置最有可能加載了不同的擴展(或不同的安全設置),這使得Apache不具備與CLI相同的功能。

$ ls -l /etc/php5/cli/php.ini 
-rw-r--r-- 1 root root 65485 Jan 27 09:20 /etc/php5/cli/php.ini 

$ ls -l /etc/php5/apache2/php.ini 
-rw-r--r-- 1 root root 65839 Oct 31 2012 /etc/php5/apache2/php.ini 
+0

我複製了cli/php.ini文件中的所有設置,我似乎無法得到任何這些東西的工作。 – Joey

+0

@Joey在更改後,apache上的phpinfo()會顯示'curl'嗎? –

+0

不,它使我不知道它是如何在CLI上工作的 – Joey

0

只是一個觀察,有多餘<「>單引號中的這些行:

 'var1' => trim(shell_exec($command')), 
     'var2' => trim(shell_exec($command')), 
     'var3' => trim(shell_exec($command')), 

除此之外,我同意勒夫的建議。

+0

已修復,爲了隱私起見,我更改了很多信息。 – Joey