Проверка типа дескриптора файла в PHP - PullRequest
0 голосов
/ 08 августа 2011

Я использую fopen, чтобы открыть фид (файл .txt) с URL, но иногда фид не найден. Я хотел бы, чтобы fopen возвращал FALSE, когда это происходит, чтобы я мог обработать ошибку. Однако, когда фид не найден по целевому URL, меня перенаправляют на другую страницу сайта, сообщая мне, что указанный файл не найден. В результате, мой $ handle ссылается на неправильный файл, и fopen возвращает TRUE (потому что он нашел - что-то - хотя и неправильную вещь), тем самым саботируя мою попытку обработки ошибок.

Как я могу убедиться, что у fopen есть нужный файл? Спасибо.

if ($handle = fopen($feed, "r")) {
   //fopen returned true, do stuff
} else {
   //fopen returned false, quit
   die("Fail.");
}

1 Ответ

1 голос
/ 08 августа 2011

Вы можете заставить оболочку http игнорировать перенаправления следующим образом:

$opts = array(
    'http' => array('method' => 'GET',
                    'max_redirects' => '0')
);

$context = stream_context_create($opts);
$handle = fopen($feed, 'r', false, $context);
...