php существует, не находит файл

У меня возникли проблемы с удалением файла с веб-сайта с помощью PHP.

У меня есть код, который загружает файл (который работает), затем он изменяет размер, переименовывает, меняет формат изображения и дважды сохраняет загруженное изображение. (Один раз как полноразмерное изображение, один раз как миниатюра.)

Эта часть работает нормально, не беспокойтесь.

Однако я пишу код проверки ошибок, который удалит эти загруженные изображения, если форматы изображений не соответствуют расширению файлов.

(Например, создайте файл BMP в mspaint и сохраните его. Закройте Paint, снова откройте файл BMP в Paint, затем щелкните файл, сохраните как, затем сохраните его как PNG.

Что происходит, так это то, что краска просто изменит расширение, а не формат файла. Попробуйте открыть этот png с помощью моего php-скрипта, и он завершится с ошибкой «изображение не является допустимым png».

Я написал пользовательскую функцию ошибки, чтобы сообщить пользователю, что формат изображения неправильный. (Потому что информировать пользователей о том, почему у них возникла проблема, лучше, чем просто сказать им, что у них есть проблема.)

Приведенный ниже код отобразит имя файла, который существует, но не пройдет проверку «file_exists».

print( $imagename . ".jpg<br/>\n" ); // Displays 'images/filename.jpg'
if ( file_exists( $imagename.".jpg" ) ) { unlink( $imagename.".jpg" ); print( "Image deleted<br/>\n" ); }

Я безуспешно пытался поставить «/» перед ожиданием, и я не совсем понимаю, почему файл не найден?

Любые подсказки? (И извините за огромный блок текста!)


person Philip Lewis    schedule 18.09.2015    source источник
comment
Где вы храните свои изображения? В той же папке, что и ваш файл php? Бьюсь об заклад, это проблема пути   -  person Justin Iurman    schedule 18.09.2015
comment
Лучше предоставьте проверку с помощью $_FILES['upl']['type'] и разрешите расширение, которое вам требуется.   -  person Ninju    schedule 18.09.2015
comment
Файлы находятся в папке с изображениями, расположенной как подпапка той, в которой находится файл php. Итак: папка файла php/images/uploaded file   -  person Philip Lewis    schedule 18.09.2015


Ответы (2)


Попробуйте добавить это в свой скрипт:

print( getcwd() .'/'. $imagename . ".jpg<br/>\n" ); // Displays full path

Это скажет вам, где PHP ищет файл для удаления. Если это отличается от того, где на самом деле находится файл, вам нужно указать PHP правильный путь. Есть много способов добиться этого, два основных примера.

Используйте абсолютный путь: (работает, пока вы не переместите свой код)

$rootPath='/var/www/html/orsimilar/';
if ( file_exists( $rootPath. $imagename.".jpg" ) ) { unlink( $imagename.".jpg" ); print( "Image deleted<br/>\n" ); }

Или используйте относительный:

$rootPath=__DIR__ . '/../pathtoimages';
if ( file_exists( $rootPath. $imagename.".jpg" ) ) { unlink( $imagename.".jpg" ); print( "Image deleted<br/>\n" ); }
person Steve E.    schedule 18.09.2015

Спасибо всем за вашу помощь.

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

Мой код создал новое пустое изображение, а затем скопировал в него исходное изображение (это часть, в которой он потерпит неудачу), а затем, если произошел сбой, он скопирует пустые изображения в конечное место. В момент сбоя файлы фактически не существуют, чтобы file_exists мог их найти"

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

Еще раз спасибо за вашу помощь, но еще раз, PEBCAK!

person Philip Lewis    schedule 18.09.2015