0

ローカル マシンの特定のパスからファイルをアップロードし、それを 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);
4

1 に答える 1

0

私は最近、centOs マシンで同様の問題に遭遇しました。centOsでデフォルトでオンになっているselinuxであることが判明しました。書き込み権限があることを確認し、selinux を無効にします。(またはApacheユーザーアクセスを許可するように構成します)

http://wiki.centos.org/HowTos/SELinux

于 2013-04-30T17:59:16.070 に答える