У меня был сервер Apache HTTP на CentOS, я установил PHP (yum install php
), а затем протестировал простой скрипт, который пишет текст в файл, поэтому я делаю
$file = fopen($filename,"w") or die("Failure");
Проблема в том, что это всегда сбой, даже после того, как я сделал chown apache:apache /var/www/html/*
или chmod 777 *
в этом каталоге, так что кто-нибудь знает способ понять / исправить это?
РЕДАКТИРОВАТЬ: Таким образом, проблема была в том, что у самого каталога не было chown
Трудно сказать, что это такое без фактического сообщения об ошибке от 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 изучить сообщения об ошибках и установить их разрешения должным образом рекурсивным способом.
Измените режим w на w + — это позволит php создавать файл, если он не существует.
$file = fopen($filename,"w+") or die("Failure");