PHP file_exists не работает

Я пытаюсь сделать фотографии профиля представленными против списка отзывов на сайте, над которым я работаю. Если у них нет профиля, у меня есть стандартный образ для показа, но, к сожалению, изображение всегда идет на стандартный образ, а не на профиль, даже если он существует. Вот код:

$reviewerPic = 'http://www.[URL].co.uk/images/members/' . $reviewPosterId . '/profilePic.jpg'; $default_pic = 'http://www.[URL].co.uk/images/background.jpg'; if(file_exists($reviewerPic)){ $reviewer_pic = '<img src="' . $reviewerPic . '" width="100px" style="float: left; margin: 20px;" />'; }else { $reviewer_pic = '<img src="' . $default_pic . '" width="100px" style="float: left; margin: 20px;" />'; } 

Довольно общий код, но он не работает! Он просто продолжает показывать фоновое изображение …

Любые идеи о том, почему file_exists не будут работать?

Функция, которую вы используете, file_exists , использует физические пути, параметр, который необходимо указать , должен быть адресом на том сервере, на котором файл может быть найден, а не URL-адресом

У тебя должно быть что-то вроде

 /home/var/www/images/ 

вместо

 http://www.[URL].co.uk/images/ 

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

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

file_exists не работает с HTTP,

use: $_SERVER["DOCUMENT_ROOT"] для доступа к корню на вашем хосте

так

 $reviewerPic = $_SERVER["DOCUMENT_ROOT"].'/images/members/' . $reviewPosterId . '/profilePic.jpg'; $default_pic = $_SERVER["DOCUMENT_ROOT"].'/images/background.jpg'; 

File_exists использует / home / www / username / public_html / format. Вы можете захотеть получить это от своего хоста.

Таким образом, это будет что-то вроде /home/www/jack/public_html/[URL].co.uk/profilepic/id/profilePic.jpg .

Кстати, не нужно использовать . в вашем echo '<img src=... Вы можете использовать переменные внутри строк, вы должны использовать только . когда вам нужно изменить его с помощью функции или чего-то вроде функции "string0".function($str....)."string1";

Согласно руководству PHP для file_exists не все протоколы поддерживают эту функцию:

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

HTTP-обертка не поддерживает stat:

Поддерживает stat () Нет

функция file_exists PHP работает только с физическими файлами, такими как /var/www/file.ext или C:\WWW\File.ext а не для файлов HTTP. Он даже не знает, как обращаться с HTTP-файлами.

В этом случае, если вы хотите узнать, есть ли файл или нет, поскольку он будет HTTP-ответом, вы можете попробовать использовать curl , который, если он отвечает 404 , затем файл не найден.

Для получения дополнительной информации ознакомьтесь с ними: http://php.net/manual/en/function.file-exists.php и http://php.net/manual/en/book.curl.php

file_exists не поддерживает удаленные URL-адреса.

Вы можете попробовать следующее:

 if (fopen($reviewerPic, "r")) echo "File exists!"; 

Попробуйте простой.

 $reviewerPic = 'http://www.[URL].co.uk/images/members/' . $reviewPosterId . '/profilePic.jpg'; $default_pic = 'http://www.[URL].co.uk/images/background.jpg'; if($fileopen = @fopen($reviewerPic)){ $reviewer_pic = '<img src="' . $reviewerPic . '" width="100px" style="float: left; margin: 20px;" />'; fclose($fileopen); }else { $reviewer_pic = '<img src="' . $default_pic . '" width="100px" style="float: left; margin: 20px;" />'; }