eprivalov
@eprivalov
Учусь

Из-за чего ошибка при создании файла в PHP и при закрытии ресурса?

Добрый вечер, у меня есть вот такие куски кода в проекте:

$ourFileHandle = fopen("GameEngine/Prevention/research.txt", 'w');
		fclose($ourFileHandle);


Этот код вызывает такую ошибку:

PHP Warning:  fopen(GameEngine/Prevention/research.txt): failed to open stream: No such file or directory in /var/www/GameEngine/Automation.php on line 3315, referer: http://travianx5.ru/GameEngine/Admin/Mods/
    [Wed Jan 29 19:14:55.684635 2014] [:error] [pid 5485] [client 178.140.62.207:53780]
    
    PHP Warning:  fclose() expects parameter 1 to be resource, boolean given in /var/www/GameEngine/Automation.php on line 3316, referer: http://travianx5.ru/GameEngine/Admin/Mods/ [Wed Jan 29 19:14:55.684734 2014] [:error] [pid 5485] [client 178.140.62.207:53780]


Почему так может происходить? Причем такие ошибки вылазят везде, где используются функции fopen() и fclose(). Как это исправить?
  • Вопрос задан
  • 3122 просмотра
Решения вопроса 1
jakulov
@jakulov
если версия php >= 5.3
лучше использовать fopen(__DIR__ . '/путь до файла относительно скрипта');

__DIR__ - дает абсолютный путь до директории, в которой лежит исполняемый php-скрипт.

для более ранних версий php можно юзать dirname(__FILE__) - дает тоже самое.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
dabich
@dabich
Web Developer
Попробуй так
$ourFileHandle = fopen("../GameEngine/Prevention/research.txt", 'w');
Ответ написан
Комментировать
@totosarg
Проверял? Проверял. Работает? Работает. Не трогай!
Проверте permissions на директории в которые вы пытаетесь писать.
Ответ написан
Комментировать
dabich
@dabich
Web Developer
Проверь путь к файлу который пытаешься открыть относительно скрипта.
Если файл лежит в директории с скриптом, то просто имя файла. Если где-то в других, то в начале нужно поставить " / " и дописать путь по директориям. Или добиться правильный полный путь к файлу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы