【问题标题】:error on using @fopen使用@fopen 时出错
【发布时间】:2009-05-20 09:20:38
【问题描述】:

我正在使用@fopen 以“rb”模式打开文件。我在此处打开的文件正在运行且没有错误,但如果我使用 @fopen 打开该文件,则会出现错误。

代码是这样的---

$file = @fopen("xyz.com","rb") or $flag=1;

if($flag==1)
{
    mail($to, $subject, $message, $from);
    die();
}

有时它会打开而没有发送任何错误邮件,但有时它会开始提供如此多的错误邮件。

打开这个网址没有任何错误邮件的解决方案是什么?请帮忙!!

【问题讨论】:

  • 提供错误消息本身会很有帮助
  • 我们需要您收到的错误消息来提供帮助
  • 看我已经采取了 $file = @fopen("xyz.com","rb") 或 $flag=1;如果 url 打开,则 $flag 未设置为 1,否则它将设置为 1(请参阅 $file),并且一旦设置为 1,就会生成邮件............我得到那些生成的邮件没有任何特定的错误....我在许多页面中使用此代码,但对于特定的 url,它会生成那些错误邮件....
  • 我认为您的代码对我有所帮助...错误邮件现在没有发送 :-) 我又收到一个错误警告:fopen(xyz.htm): failed to open stream: HTTP request failed!在第 8 行的 /home/user/public_html/aaa/ttt.php 中,这背后的原因是什么???????
  • 原因?最有可能的用户权限,即。运行脚本的用户没有写入文件夹的必要权限。 编辑好的,下次我最好检查原始 cmets 上的日期,但我只是注意到它,因为显然有人通过发布答案来复活这个问题......

标签: php fopen


【解决方案1】:

如果您尝试打开一个 URL(假设来自您包含的“xyz.com”),那么您需要在它之前包含架构声明。例如。 http://xyz.com,否则 PHP 将尝试打开本地文件。如果您指的是本地文件,请确保在 Windows 上转义任何反斜杠。

但是,您的代码示例的其余部分本身并没有其他问题会导致问题。 @ 只是抑制错误输出,因此它本身不会导致任何奇怪的行为。

尽管如此,处理它的更好方法可能是这样做:

$file = @fopen("xyz.com","rb");

if(!$file)
{
    mail($to, $subject, $message, $from);
    die();
}

【讨论】:

  • 你是对的 James,但我使用的是 http://,虽然我没有在我的代码中写过,但我正在使用它,但仍然会生成邮件......我想摆脱那些错误邮件.....
  • 已经编辑了我对“更好”代码示例的答案...试试看,看看你是否仍然遇到同样的问题。
  • 如果你想摆脱邮件,只需注释掉 mail() 函数 :) 它有时(但并非总是)失败的原因可能是目标服务器 xyz.com 并不总是响应(足够快)。此问题的解决方案取决于您需要该应用程序的用途。
【解决方案2】:

尝试使用

file_get_contents(); 

函数而不是 fopen()。

【讨论】:

    【解决方案3】:

    顺便说一句,当出现错误时,您正在设置 $flag = 1。但是如果上次有错误而这次没有错误呢? (那么 $flag 仍然是前一次的 1)。

    【讨论】:

    • 我在文件的开头初始化 $flag=0 ......所以每次它首先设置为 0 然后如果 @fopen 失败则只有它会设置为 1... .......
    【解决方案4】:

    从 fopen 方法的开头删除“@”字符,(@ 符号的存在会抑制任何 php 驱动的错误消息)这将为您解释为什么 php 认为您无法打开该文件 - 我会冒险猜测文件的路径或文件的权限无效。

    【讨论】:

      【解决方案5】:

      什么是错误信息?没有它,我们只能猜测问题所在。

      你的 ini 中总是允许使用 url fopen 吗?也许这个值会被 ini_set() 覆盖?

      你确定那个 url 是正确的并且主机是活着的吗?

      最后,我建议改用 fsockopen。它提供了更灵活的远程连接、错误处理以及设置连接超时的可能性。

      【讨论】:

        【解决方案6】:

        @ 符号抑制错误,因此永远不会设置 $flag

        【讨论】:

          猜你喜欢
          • 2018-07-03
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 2018-01-15
          • 2021-07-03
          • 2015-09-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多