【问题标题】:PHP unlink() breaks file_exists, header, and echo functions?PHP unlink() 会破坏 file_exists、header 和 echo 函数吗?
【发布时间】:2012-08-17 08:28:44
【问题描述】:

我有以下代码:

$tmpfile = $tempDirectory . $file ;

if (file_exists($tmpfile)) {

   header('Location: <some location>');

}

它运行完美,文件存在,我被重定向到我的新页面。

所以,现在我知道该文件存在并且有效。所以,我进入 FTP,确保文件在那里。

然后我运行这段代码:

$tmpfile = $tempDirectory . $file ;

if (file_exists($tmpfile)) {

   unlink($tmpfile);
   header('Location: <some location>');

}

重定向停止工作。 PHP 什么也不输出。该文件将从 FTP 目录中删除。但是重定向完全失败。

如果我在 if 语句中放了一个 echo,当存在取消链接时(在 if 语句中的任何其他代码行之前或之后,它不会输出任何内容。

没有unlink错误,而且我检查FTP的时候明显删除了文件,这是怎么回事?

代码运行时会被删除,所以显然不是权限问题。如果没有权限,它将无法删除该文件。

感谢任何帮助。谢谢!

【问题讨论】:

  • 代码if (file_exists($tmpfile) == TRUE) {可以替换为if (file_exists($tmpfile))。无需针对true 进行显式测试。
  • 文件不再存在,所以不会有重定向,它永远不会进入条件
  • 致乔斯林:我明白这一点。我来自 C++ 背景,此代码最初采用您提供的格式。我只是为了清楚起见。
  • 致 Ibu:文件没有被删除。我不会在另一个之后运行它们。我进行了两个单独的案例测试。即使我一个接一个地做了,第一个 if 语句不包含取消链接,如何删除文件?

标签: php


【解决方案1】:

解决方案可能很简单:

[blank space] - this breaks redirect
<?php

// code

PHP 也可能在取消链接时崩溃。确保您的 error_reporint setting 设置为 E_ALL。

【讨论】:

  • 它看起来不像空格那么简单。我会尽快查看您的错误报告设置。谢谢。
  • 而且... XAMPP 升级了,让我们使用新的 PHP Putty 球来玩并确保它有效。
  • WAMP 比 XAMMP 稳定得多,我一直想知道为什么人们继续使用 XAMPP :)
  • 这是一个快速而肮脏的安装。但公平点。以后我会记住WAMP的,谢谢!我在 XAMPP 上尝试了相同的代码,取消链接有效,标头重定向有效。我们的 PHP 远程安装出了点问题。 (这将是与 IT 交谈愉快的一天)
  • 设置为 E_ALL 帮助我们通过我们的托管服务提供商解决了这个问题。谢谢彼得!
猜你喜欢
  • 2011-07-29
  • 2016-04-30
  • 2012-06-19
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多