php 文件存在但找不到文件

php file exist not finding file

我在使用 PHP 从网站删除文件时遇到了一些问题。

我有一些代码可以上传文件(有效),然后调整大小、重命名、更改图像格式并将上传的图像保存两次。 (一次作为全尺寸图像,一次作为缩略图。)

这部分工作正常,不用担心。

但是,我正在编写一些错误检查代码,如果图像格式与文件扩展名不匹配,这些代码将删除这些上传的图像。

(比如在mspaint中创建一个bmp文件并保存。关闭paint,在paint中重新打开bmp文件然后点击文件,另存为,然后另存为png。

Paint 只会更改扩展名而不是文件格式。尝试使用我的 php 脚本打开该 png,它将失败并显示 '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" ); }

我试过在前面加上一个“/”,但没有成功,而且我不确定为什么找不到文件?

有什么提示吗? (并为大段文字道歉!)

尝试将此添加到您的脚本中:

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 无法找到它们

我现在已经检查失败,如果有问题我不会复制文件。

再次感谢您的帮助,PEBCAK!