我正在使用@fopen以“rb”模式打开文件。我在这里打开的文件运行时没有错误,但是如果我使用@fopen打开该文件则会出错。
代码是这样的---
$file = @fopen("xyz.com","rb") or $flag=1;
if($flag==1)
{
mail($to, $subject, $message, $from);
die();
}
有时它会在没有发送任何错误邮件的情况下打开,但有时它会开始提供这么多错误邮件。
在没有任何错误邮件的情况下打开此网址的解决方案是什么?请帮助!!
答案 0 :(得分:1)
如果您尝试打开一个URL(假设您包含的'xyz.com'),那么您需要在它之前包含架构声明。例如。 http://xyz.com,否则PHP将尝试打开本地文件。如果您指的是本地文件,请确保在Windows上使用任何反斜杠。
但是,其他代码示例中没有其他任何内在错误导致问题。 @只是简单地抑制错误输出,因此它不会导致任何奇怪的行为。
尽管如此,处理它的更好方法可能是这样做:
$file = @fopen("xyz.com","rb");
if(!$file)
{
mail($to, $subject, $message, $from);
die();
}
答案 1 :(得分:1)
尝试使用
file_get_contents();
而不是fopen()。
答案 2 :(得分:0)
顺便说一下,当出现错误时,你设置$ flag = 1。但如果上次出现错误怎么办呢?这次没有错误? (然后$ flag仍然是前一次的1)。
答案 3 :(得分:0)
从fopen方法的开头删除'@'字符,(@符号存在任何php驱动的错误消息)这将给你解释为什么php认为你无法打开该文件 - 我会危险猜测文件的路径或文件的权限是无效的。
答案 4 :(得分:0)
什么是错误讯息?我们可以在没有它的情况下猜测问题。
你的ini中是否总是允许url fopen?也许这个值会用ini_set()覆盖某个地方?
您确定,该网址是否正确且主机是否还活着?
最后,我建议改用fsockopen。它提供了更灵活的远程连接,错误处理以及设置连接超时的可能性。
答案 5 :(得分:0)
@符号可以抑制错误,因此永远不会设置$ flag