繁体   English   中英

PHP文件上传不适用于CentOS6,但适用于OSX 10.8上的Apache2

[英]PHP file upload not working on CentOS6 but working on Apache2 on OSX 10.8

我有两个简单的脚本,用于从本地计算机上的特定路径上载文件并将其放置在Apache服务器上。 在内置于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);

我最近在centOs机器上遇到了类似的问题。 事实证明是selinux,默认情况下在centOs中将其打开。 确保您具有写权限,并禁用selinux。 (或将其配置为授予您的apache用户访问权限)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM