2013-04-30 2 views
0

У меня есть два простых сценария для загрузки файла с определенного пути на локальном компьютере и размещения его на сервере Apache. Это работает отлично на Apache построен в OSX 10.8, но не на CentOS 6. Вот код:Загрузка файла PHP не работает на CentOS6, но работает на Apache2 на OSX 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"; 
} 
?> 

Маке возвращает «Log файл успешно загружен» в окне браузера, как и ожидалось, но на поле CentOS я просто получить белый экран PHP небытия. Ничего не отображается как ошибка в Apache error_log, и я застрял в том, как продолжить устранение этого.

Любые идеи? Я попытался загрузить некоторые отладки кода в файлы PHP, но я до сих пор получить только пробельные назад:

ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 
+0

По всей вероятности, это проблема окр. Проверьте разрешения и пути. И если они выглядят нормально, проверьте их снова, и все еще, если проблем нет ... ну еще раз проверьте – raidenace

+0

Спасибо. Странно, так как я могу добавить строки, которые полностью отражают все среды в первом скрипте, но это как бы не делает его logaccept.php каким-то образом .. Даже если я поставлю эхо «мир привет»; в верхней части logaccept.php он не появляется. Если я перейду непосредственно к log accept.php, тогда это произойдет. – BSUK

+0

Я думаю, что это бит свертки, который терпит неудачу, хотя это выходит за рамки моих знаний PHP. Я замечаю, что PHP был скомпилирован с -without-curl, но, несмотря на то, что в файле .ini есть файл, он говорит, что завиток включен. Этот -without-curl не существует в команде компиляции OSX. – BSUK

ответ

0

Я недавно столкнулся с подобной проблемой на машине CentOS. Оказалось, что selinux включен по умолчанию в centO. Убедитесь, что у вас есть права на запись, и отключите selinux. (Или настроить его, чтобы дать вашему апачский доступ пользователя)

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

+0

Это отключено, но спасибо за предложение. Из-за этого у меня были проблемы! – BSUK

+0

Я провел два дня, отслеживая это несколько недель назад. Я надеялся, что это было просто. – eidsonator

Смежные вопросы