ошибка при использовании @fopen - PullRequest
0 голосов
/ 20 мая 2009

Я использую @fopen, чтобы открыть файл в режиме "rb". файл, который я открываю здесь, работает без ошибок, но если я открою этот файл с помощью @fopen, он выдаст ошибку.

код примерно такой ---

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

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

иногда он открывается без отправки сообщения об ошибке, но иногда начинает выдавать столько сообщений об ошибках.

что такое решение, чтобы открыть этот URL без сообщения об ошибке? Пожалуйста, помогите !!

Ответы [ 6 ]

1 голос
/ 20 мая 2009

Попробуйте использовать

file_get_contents(); 

функция вместо fopen ().

1 голос
/ 20 мая 2009

Если вы пытаетесь открыть URL (исходя из включенного вами «xyz.com»), то вам нужно включить объявление схемы перед ним. Например. http://xyz.com, в противном случае PHP попытается открыть локальный файл. Если вы ссылаетесь на локальный файл, обязательно избегайте обратной косой черты, если вы работаете в Windows.

Тем не менее, в остальном примере кода нет ничего плохого, что могло бы вызвать проблему. @ просто подавляет вывод ошибок, поэтому само по себе оно не будет вызывать каких-либо странных действий.

Хотя, как уже говорилось, лучший способ справиться с этим мог бы сделать это:

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

if(!$file)
{
    mail($to, $subject, $message, $from);
    die();
}
0 голосов
/ 09 августа 2010

Символы @ подавляют ошибки, поэтому $ flag никогда не будет установлен

0 голосов
/ 20 мая 2009

Что такое сообщение об ошибке? Мы можем только догадываться о проблеме без нее.

Всегда ли разрешен URL-адрес в вашем ini? Может быть, это значение где-то переопределяется с помощью ini_set ()?

Вы уверены, что URL правильный, а хост жив?

Наконец, я рекомендую вместо этого использовать fsockopen. Это обеспечивает более гибкие удаленные соединения, обработку ошибок для них и возможность установить время ожидания соединения.

0 голосов
/ 20 мая 2009

удалите символ @ из начала метода fopen (присутствие символа @ подавляет любое сообщение об ошибке, управляемое php), это даст вам объяснение, почему php считает, что вы не можете открыть этот файл - я бы рискнул предположение, что путь к файлу или права доступа к файлу неверны.

0 голосов
/ 20 мая 2009

кстати, вы устанавливаете $ flag = 1, когда возникает ошибка. но что, если в прошлый раз произошла ошибка, а в этот раз ошибки нет? (тогда $ flag все еще равен 1 от предыдущего раза).

...