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


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

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

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

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

(для например, создайте bmp-файл в mspaint и сохраните его. закройте paint, снова откройте bmp-файл в paint, затем нажмите file, save as, а затем сохраните его в формате png.

В результате paint просто изменит расширение, а не формат файла. Попробуйте открыть этот png с помощью моего php-скрипта,и он потерпит неудачу с ошибкой "image not a 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 2

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

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

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

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

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

Еще раз спасибо за помощь, но еще раз, ПЕБКАК!