У меня есть сервер в облаках стойки ... Fedora 13, и я установил apache, mysql.
Теперь у меня есть фрагмент кода (PHP), который мое веб-приложение часто использует. Он работает на моем локальном компьютере с XAMPP, но когда я загружаю этот код на свой сервер стойки, он не работает:
$myFile = "textfile.txt";
$fh = fopen($myFile, 'w') or die("cant open");
$stringData = "CONTENT";
fwrite($fh, $stringData);
fclose($fh);
Действительно простой PHP-код, который должен работать. Однако он не создаст файл, и если я сам загружу файл textfile.txt и сам предоставлю разрешения 0666, он редактирует файл. Однако это не идеально, поскольку он по-прежнему не создает новые файлы (или каталоги), а изменение каждого из них вручную невозможно.
Владелец файла - root, а группа - root
Как мне заставить это работать?
ОБНОВЛЕНИЕ - Исправлено
Я сменил владельца на apache: apache do: chown -R apache: apache / var / www / html
Казалось, это сработало :)
Есть ли здесь какие-либо проблемы с безопасностью, или это нормально, если пользовательский apache и групповой apache?
Спасибо!
Предоставление пользователю apache доступа на запись ко всему вашему DocRoot - не лучший вариант. Обычно я настраиваю вещи немного иначе.
Сначала я определяю место, где будут записаны файлы - это может быть DocRoot или отдельное место, которое заносится с конфигурацией псевдонима в apache.
Я создаю группу (обычно называемую www-pub) и добавляю в нее пользователя apache.
Тогда я делаю
chown root:www-pub <directory>
и
chmod g+rwxs <directory>
который устанавливает бит setgid, что означает, что любые файлы или каталоги, созданные в верхней части, будут иметь ту же группу, что и родительский каталог, а также будут доступны для записи (и чтения) этой группой.
Таким образом, вы ограничиваете, где и что может получить пользователь apache, но по-прежнему разрешаете создание файлов и т. Д. Только в этой области.
Поместите info.php.
echo -e "<?php \nphpinfo(); \n?>" > info.php
с соответствующим правом собственности. Затем обновите здесь, чтобы я мог проверить, display_errors
включен или нет.
Или простой поворот ON
display_errors
и это поможет вам устранить неполадки.