Проверка file_get_contents
Руководство по PHP возвращаемое значение.Если значение равно FALSE
, он не может прочитать файл.Если значение NULL
, то сама функция отключена.
Чтобы узнать больше, что может пойти не так с операцией file_get_contents
, необходимо включить отчеты об ошибках и отображение ошибок, чтобы фактически их прочитать.
# Enable Error Reporting and Display:
error_reporting(~0);
ini_set('display_errors', 1);
Подробнее о причине сбоя вызова можно узнать, проверив значения INI на вашем сервере.Одно значение, которое напрямую влияет на функцию file_get_contents
, равно allow_url_fopen
.Вы можете сделать это, запустив следующий код.Следует отметить, что если он сообщает, что fopen запрещен, вам нужно будет попросить вашего провайдера изменить этот параметр на вашем сервере, чтобы любой код, который требует, чтобы эта функция работала с URL-адресами.
<html>
<head>
<title>Test File</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
</script>
</head>
<body>
<?php
# Enable Error Reporting and Display:
error_reporting(~0);
ini_set('display_errors', 1);
$adr = 'Sydney+NSW';
echo $adr;
$url = "http://maps.googleapis.com/maps/api/geocode/json?address=$adr&sensor=false";
echo '<p>'.$url.'</p>';
$jsonData = file_get_contents($url);
print '<p>', var_dump($jsonData), '</p>';
# Output information about allow_url_fopen:
if (ini_get('allow_url_fopen') == 1) {
echo '<p style="color: #0A0;">fopen is allowed on this host.</p>';
} else {
echo '<p style="color: #A00;">fopen is not allowed on this host.</p>';
}
# Decide what to do based on return value:
if ($jsonData === FALSE) {
echo "Failed to open the URL ", htmlspecialchars($url);
} elseif ($jsonData === NULL) {
echo "Function is disabled.";
} else {
echo $jsonData;
}
?>
</body>
</html>
Если все это не удается, это может быть связано с использованием коротких открытых тегов <?
.Поэтому код примера в этом ответе был изменен, чтобы использовать <?php
для правильной работы, поскольку это гарантированно будет работать во всех версиях PHP, независимо от того, какие параметры конфигурации установлены.Чтобы сделать это для собственного скрипта, просто замените <?
или <?php
.