file_exists всегда false - PullRequest
       7

file_exists всегда false

0 голосов
/ 03 февраля 2011
$var = "http://site.com/image.png";

if (file_exists($var))
    echo 'yes';
else
    echo 'no';

Почему этот скрипт всегда возвращает false?

Ответы [ 4 ]

10 голосов
/ 03 февраля 2011

Поскольку это , а не на самом деле файл, а скорее URL.

Вплоть до PHP5 функция file_exists предназначалась для определения, существует ли файл или каталог.

На PHP5 была введена поддержка, позволяющая поддерживать некоторые упаковщики URL, согласно примечанию на этой странице :

Подсказка: По состоянию наPHP 5.0.0, эта функция также может использоваться с некоторыми упаковщиками URL.Обратитесь к разделу «Поддерживаемые протоколы и оболочки», чтобы определить, какие оболочки поддерживают функцию семейства stat ().

Оболочки подробно описаны здесь , но, к сожалению, httpне поддерживает stat, необходимое для работы file_exists.

Если вы работаете на сервере, вы можете конвертировать его с помощью $_SERVER['DOCUMENT_ROOT'] или найти другой способ.найти его в файловой системе.

1 голос
/ 03 февраля 2011

Если вы хотите проверить наличие удаленных файлов (фактически «ресурсов»), тогда используйте:

$i = get_headers($url);
$ok = strpos($i[0], "200");

и проверьте код состояния HTTP.

0 голосов
/ 03 февраля 2011

Тогда, скорее всего, ваш сервер не допускает внешних подключений изнутри PHP.

Вы можете проверить это, открыв локальный файл и посмотрев, работает ли он. Если это так, ваш код правильный.

Убедитесь, что для allow_url_fopen установлено значение ON.

0 голосов
/ 03 февраля 2011

Переменная $var должна описывать путь в системе, а не URL.Например

$var = "/var/www/html/image.png";
...