【问题标题】:php file exist not finding filephp文件存在找不到文件
【发布时间】:2015-12-15 12:19:18
【问题描述】:

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

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

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

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

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

发生的情况是,paint 只会更改扩展名,而不是文件格式。尝试使用我的 php 脚本打开该 png,它会因“图像不是有效的 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" ); }

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

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

【问题讨论】:

  • 您将图像存储在哪里?在与您的 php 文件相同的文件夹中?我敢打赌这是一个路径问题
  • 最好使用 $_FILES['upl']['type'] 提供验证并允许您需要的扩展。
  • 文件位于 images 文件夹中,作为 php 文件所在文件夹的子文件夹。所以:php 文件夹/图像/上传的文件

标签: php file-exists unlink


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    感谢大家的帮助。

    使用 getcwd() 确认它正在寻找文件的正确位置,但问题出在我身上。

    我的代码创建了新的空白图像,然后将源图像复制到它,(这是它会失败的部分)然后如果出现故障,它会将空白图像复制到最终位置。在故障点,文件实际上并不存在,以便 file_exists 找到它们”

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

    再次感谢您的帮助,但再次感谢您的帮助,PEBCAK!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 2014-05-31
      • 1970-01-01
      • 2016-06-30
      • 2015-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多