Эквивалентная функция is_file () для URL? - PullRequest
3 голосов
/ 31 октября 2008

Каков наилучший способ проверить, указывает ли данный URL-адрес на действительный файл (то есть не вернуть 404/301 / и т. Д.)? У меня есть скрипт, который будет загружать определенные файлы .js на страницу, но мне нужен способ проверить, что каждый полученный URL-адрес указывает на действительный файл.

Я все еще копаюсь в руководстве по PHP, чтобы увидеть, какие файловые функции (если они есть) будут работать с удаленными URL-адресами. Я отредактирую свой пост, когда найду более подробную информацию, но если кто-то уже пошел по этому пути, не стесняйтесь вмешиваться.

Ответы [ 3 ]

5 голосов
/ 31 октября 2008

file_get_contents немного выходит за рамки цели, поскольку для принятия решения достаточно иметь заголовок HTTP, поэтому для этого вам понадобится curl:

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>
0 голосов
/ 31 октября 2008

Если на вашем сервере не включены упаковщики fopen (на любом сервере с достойной безопасностью этого не происходит), вам придется использовать функции CURL .

0 голосов
/ 31 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...