ローカル マシンの特定のパスからファイルをアップロードし、それを Apache サーバーに配置するための 2 つの簡単なスクリプトがあります。OSX 10.8 に組み込まれた Apache では正常に動作しますが、CentOS 6 では動作しません。コードは次のとおりです。
http://mysite.mydomain.com/logsend.php?logfilename=logfile.log
次に、「logsend.php」に移動します。
<?php
$logfilename = $_GET['logfilename'];
$target_url = 'http://mysite.mydomain.com/logaccept.php';
$localdir = '/usr/local/mysoftware/logs/';
$logurl = $localdir . $logfilename;
$post = array('extra_info' => '123456','file_contents'=>'@'.$logurl);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
$result=curl_exec ($ch);
curl_close ($ch);
?>
次に、logaccept.php に移動します。
<?php
$uploaddir = realpath('uploads/') . '/';
$uploadfile = $uploaddir . basename($_FILES['file_contents']['name']);
if (move_uploaded_file($_FILES['file_contents']['tmp_name'], $uploadfile)) {
echo "Log file successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
?>
Mac では、ブラウザ ウィンドウに「ログ ファイルが正常にアップロードされました」というメッセージが表示されますが、CentOS ボックスでは何もない PHP の白い画面が表示されます。Apache error_log にエラーとして何も表示されず、これをさらにトラブルシューティングする方法について行き詰まっています。
何か案は?いくつかのデバッグ コードを PHP ファイルに読み込もうとしましたが、まだ空白しか返されません。
ini_set('display_errors', 'On');
error_reporting(E_ALL);