php файл существует не найден

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

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

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

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

(Например, создайте файл bmp в mspaint и сохраните его. Закройте краску, снова откройте файл bmp в paint, затем щелкните файл, сохраните как, а затем сохраните его как png.

Что происходит, краска просто изменит расширение, а не формат файла. Попробуйте открыть этот png с помощью моего php-скрипта, и он потерпит неудачу с ошибкой «image is not valid 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" ); }

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

Есть намеки? (И извинения за огромный блок текста!)

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" ); }
1

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

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

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

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

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

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

0

По вопросам рекламы [email protected]