我有兩個簡單的腳本來從本地機器上的特定路徑上傳文件並將其放在Apache服務器上。它的工作在Apache精細內置到OSX 10.8,但不是在CentOS 6 下面是代碼:PHP文件上傳不能在CentOS6上工作,但在OSX上使用Apache2 10.8
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);
在所有的可能性,這是一個ENV問題。檢查權限和路徑。如果它們看起來沒問題,再次檢查它們,如果沒有問題...請再次檢查 – raidenace 2013-04-30 17:55:03
謝謝。這很奇怪,因爲我可以在第一個腳本中添加能夠迴應所有環境的行,但它好像不會使logaccept.php以某種方式呈現出來。即使我將回聲放在「hello world」中,也是如此。在logaccept.php的頂部它沒有顯示出來..如果我直接去登錄accept.php,那麼它會。 – BSUK 2013-04-30 18:27:38
我認爲這是失敗的捲曲位,儘管這超出了我的PHP知識範圍。我注意到PHP是用--without-curl編譯的,儘管進一步推薦使用curl的.ini文件。這個--without-curl在OSX編譯命令中不存在。 – BSUK 2013-04-30 19:03:56