PHP と cURL は、私の amazon EC2 マイクロ インストール 12.04.2 LTS (GNU/Linux 3.2.0-40-virtual x86_64) の Web に接続されていないディレクトリで正常に動作します。
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);
これはうまくいきます。
ただし、この同じスクリプトを Web に面したディレクトリに配置するとすぐに (#!/usr/bin/php
明らかに削除します)、ページが読み込まれます (echo 'Hello World!'
一番上に入力して、リモート マシンからブラウザでテキストを表示できます)。空白にして、echo
後にステートメントを追加するとcurl
、何も起こりません。関数呼び出しをコメントアウトしてcurl
コマンドを単純に実行しようとすると、うまくいかないようです (値の配列全体にNULL
orが入力され0
ます)。
- PHPで何が起こっているのですか?cURL が /var/www/ フォルダーでは実行されず、他の場所では問題なく実行されるのはなぜですか? cURL を使用して情報をデータベースに保存し、パブリック API から JSON を取得しています。
shell_exec
通常はコマンド ラインで PHP を使用してスクリプトを実行できないのはなぜですか?- が設定されていても、エラーは PHP に表示されません
error_reporting(E_ALL)
。locate を使用してエラーのログを見つけることができませんerror_log
またはphp.err
、phpエラーログのデフォルト名だと思いました。
これら 2 つの問題が関連している可能性があるように感じますが、理由がわかりません。おそらくアクセス許可ですか? コマンドを使用しないと、このディレクトリ内のファイルを作成または変更できないことに気付きましたがsudo
、これは通常ではありません。
別の注意: phpinfo() は cURL について何も述べていませんが、コマンド ラインで動作します。理由はわかりません。