PHP не записывает в файл

197
19 сентября 2017, 09:10

Пытаюсь выполнить файл php через http запрос. Вот он:

    <?php
     $data = file_get_contents('php://input');
     $file_name = $_GET['name'];
     $file = fopen($file_name, 'w');
     if(substr($file_name, -4)== ".png"){
        $file_content = $data;
     }
     else{
        $file_content = iconv("WINDOWS-1251", "UTF-8", $data);
     }
     fwrite($file, $file_content);
     fclose($file);
    ?>

Проблема в том, что после этой операции никаких файлов не появляется (даже пустых). Но если просто выполнить операцию с записью на сервере через php, то никаких проблем. Что делать? P.S. Использую Apache на Ubuntu 16.04

Answer 1

Как я понимаю ваш скрипт работает. Вполне вероятно юзеру www-data не хватает прав на запись. Простым решением будет дать право на запись в каталог для всех пользователей

sudo chmod 777 -R /путь/к/каталогу записи/
Answer 2

Пытаюсь выполнить файл php через http запрос

при этом скрипт выполняется от имени службы вэб сервера

если просто выполнить операцию с записью на сервере через php, то никаких проблем

при этом скрипт выполняется от имени вашего пользователя.

выводы:

  1. скрипт сам по себе рабочий
  2. у учетки вэб-сервера не достаточно прав на запись в директорию
Answer 3

Если это ваш сервер, то лучшим решением будет не давать права всем подряд, а дать права на только доступ группе, с которой работает веб-сервер:

sudo chgrp www-data path/to/dir/
chmod g+rwx path/to/dir/

Ещё лучше будет если ваш веб-сервер будет работать под вашим ID. Такое умеют PHP-FPM и Apache c mpm-itk. В таком случае другие сайты будут выполняться с другими ID, которые не получат доступ к вашему каталогу.

READ ALSO
Ошибка в Telegram боте chat_id is empty [PHP]

Ошибка в Telegram боте chat_id is empty [PHP]

Суть такова, если человек, у которого не установлен в настройках Telegram юзернейм, то есть он пустой, то при заходе в бот после нажатия на кнопку...

402
В PHP 7 отсутствует curl_dll

В PHP 7 отсутствует curl_dll

Работаю на Apache2, Ubuntu 1604, PHP 7

162
Вывод входящего SOAP запроса

Вывод входящего SOAP запроса

я пишу Soap сервер на Php , На сервер приходят запросы вида POST, а потом Soap конверт , Вопрос в том есть ли возможность выводить на страницу входящий...

195