PHP - Не удалось открыть поток: нет такого файла или каталога - для существующего файла - PullRequest
0 голосов
/ 11 ноября 2010

Я пишу PHP-приложение и в своем коде хочу создать и вернуть изображения в браузер. Тем не менее, иногда я получаю некоторые странные результаты, когда изображение не может быть создано, так как файл, кажется, не существует.

Вот пример сообщения об ошибке и код в двух словах. Я знаю, что изображение существует, но метод иногда не работает, а иногда и успешно, даже для одного и того же файла.

Ошибка:

Предупреждение: imagecreatefrompng (path / to / image.png) [function.imagecreatefrompng]: не удалось открыть поток: нет такого файла или каталога в файле test.php в строке 301

код:

if (file_exists($filename)) {
    $image = imagecreatefrompng($filename);
}

Буду очень признателен за любые подсказки или советы о том, что может быть не так, и о том, как улучшить код, чтобы сделать его более стабильным.

Ответы [ 6 ]

1 голос
/ 11 ноября 2010

Я предлагаю вам использовать is_readable

if (is_readable($filename)) {
    $image = imagecreatefrompng($filename);
}
0 голосов
/ 10 марта 2013

брат, проверьте наличие пробелов в вашем пути к файлу.У меня недавно была эта проблема, когда я пытался включить файл из модуля, который я создавал для приложения.Другие модули включены хорошо при вызове, но один не сделал.Оказалось, что в пути к файлам есть пробел.Я предлагаю вам попробовать php trim() функцию.Если это работает, привет.

0 голосов
/ 11 ноября 2010

Вы можете попробовать GD:

IF($img = @GETIMAGESIZE("testimage.gif")){ 
     ECHO "image exists"; 
}ELSE{ 
     ECHO "image does not exist"; 
} 
0 голосов
/ 11 ноября 2010

Используйте is_readable(), чтобы проверить, есть ли у вас разрешение на доступ к этому файлу.

0 голосов
/ 11 ноября 2010

Рассматривали ли вы проверку правильности разрешений? Если файл не может быть прочитан, но каталог может, вы получите file_exists(...) = true, но не сможете открыть дескриптор файла.

0 голосов
/ 11 ноября 2010

Файл может «существовать», но доступен ли файл? что на самом деле делает file_exists?

если файл открывается, а затем закрывается, убедитесь, что файл действительно закрыт и не заблокирован до запуска imagecreatedfrompng.

было бы неплохо попытаться перехватить ошибку в цикле и сделать 4 или 5 попыток, прежде чем вернуть контролируемую ошибку.

может, вместо этого попробовать is_readable () или is_writable ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...