apache — PHP не может писать файлы

У меня был сервер Apache HTTP на CentOS, я установил PHP (yum install php), а затем протестировал простой скрипт, который пишет текст в файл, поэтому я делаю

$file = fopen($filename,"w") or die("Failure");

Проблема в том, что это всегда сбой, даже после того, как я сделал chown apache:apache /var/www/html/* или chmod 777 * в этом каталоге, так что кто-нибудь знает способ понять / исправить это?

РЕДАКТИРОВАТЬ: Таким образом, проблема была в том, что у самого каталога не было chown

2

Решение

Трудно сказать, что это такое без фактического сообщения об ошибке от PHP.

Посмотрите на эту страницу:

http://www.w3schools.com/php/php_error.asp

Короче говоря, создайте и установите собственный обработчик ошибок, например так:

<?php
//error handler function
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr";
}

//set error handler
set_error_handler("customError");

//trigger error
$file = fopen($filename,"w")
?>

В вашем случае, я думаю, что для того, чтобы он мог создавать новые файлы в данном каталоге, вы бы хотели добавить флаг ‘-R’ в chmod или chown и вызывать его в самом каталоге, а не в дочерних элементах — — таким образом, если PHP должен создать файл, у него есть разрешения для этого.

РЕДАКТИРОВАТЬ: Просто любопытно, почему это имеет отрицательный голос — что такое «вопиюще неряшливый, не затрачиваемых усилий пост, или ответ, который явно и, возможно, опасно неправильно»? Я попросил OP изучить сообщения об ошибках и установить их разрешения должным образом рекурсивным способом.

4

Другие решения

Измените режим w на w + — это позволит php создавать файл, если он не существует.

$file = fopen($filename,"w+") or die("Failure");
0