2013-04-30 56 views
0

我有两个简单的脚本来从本地机器上的特定路径上传文件并将其放在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); 
+0

在所有的可能性,这是一个ENV问题。检查权限和路径。如果它们看起来没问题,再次检查它们,如果没有问题...请再次检查 – raidenace 2013-04-30 17:55:03

+0

谢谢。这很奇怪,因为我可以在第一个脚本中添加能够回应所有环境的行,但它好像不会使logaccept.php以某种方式呈现出来。即使我将回声放在“hello world”中,也是如此。在logaccept.php的顶部它没有显示出来..如果我直接去登录accept.php,那么它会。 – BSUK 2013-04-30 18:27:38

+0

我认为这是失败的卷曲位,尽管这超出了我的PHP知识范围。我注意到PHP是用--without-curl编译的,尽管进一步推荐使用curl的.ini文件。这个--without-curl在OSX编译命令中不存在。 – BSUK 2013-04-30 19:03:56

回答

0

我最近遇到了类似的问题CentOS的机器上。它原来是默认开启的selinux。确保你有写权限,并禁用selinux。 (或配置它给你的apache用户访问)

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

+0

它被禁用,但是谢谢你的建议。我以前遇到过这个问题! – BSUK 2013-04-30 18:02:01

+0

我花了两天时间跟踪数周前。我希望这件事很简单。 – eidsonator 2013-04-30 18:04:15

相关问题