проверить наличие файла с php не работает, нужна помощь - PullRequest
2 голосов
/ 17 декабря 2010

Пожалуйста, сообщите мне, что не так с моим следующим кодом:

<a href="<?php echo $_url; ?>" title="<?php echo $_name; ?>">
<?php   
$logo2 = $_url.'/image/data/logo2.png';
$logo = $_url.'/image/data/logo.png';

if (file_exists($logo2))  { 
 echo "<img src=".$logo2." alt=\"Logo\" style=\"border: none;\" />";
 } else {  
 echo "<img src=".$logo." alt=\"Logo\" style=\"border: none;\" />";
 } ?>
</a>

оба изображения $ logo2 и $ logo существуют в одном каталоге, но код показывает только $ logo (logo.png) Iнужны указатели и заранее спасибо

ОБНОВЛЕНО:

значение $ _url равно

$ this-> data ['_ url'] = $ this->config-> get ('config_url');

и когда i <?php echo $_url;?>, то будет отображаться, например, http://www.mysite.com

с использованием кода выше только показывать логотип.PNG

Ответы [ 5 ]

2 голосов
/ 17 декабря 2010

file_exists может использоваться для упаковщика URL.

В вашем случае, если вам действительно необходимо выполнить проверку упаковщика URL (будет очень медленным), убедитесь, что упаковщик URL включен (по умолчанию включен).

А также, ваш $_url = <a href="http://www.mysite.com///image/data/logo2.png" rel="nofollow">http://www.mysite.com///image/data/logo2.png</a>, учтите, что дополнительная косая черта может повлиять на перезапись веб-сервера.

Если файл расположен на том же сервере, что и ваш веб-сервер, вам следует заменить$_url to document_root (путь к папке).

Для функции file_exists возвращает true и для каталога.Вы должны заменить это на is_file

1 голос
/ 17 декабря 2010

Вы применяете file_exists() к URL, который не работает.

Вам необходимо применить его к пути файловой системы.

0 голосов
/ 17 декабря 2010

Вопреки некоторым ответам здесь, file_exists может принять URL-адрес в качестве параметра и проверит, существует он или нет.Тем не менее, вам все же лучше использовать путь к файловой системе для file_exists вместо URL.

В любом случае на ум сразу приходят две причины:

  1. Имеют ли оба файлате же разрешения?(То есть, logo.png может иметь необходимые разрешения на чтение, а logo2.png может не иметь их)

  2. Действительно ли имена файлов такие же, как в сценарии?Например, все может нормально работать на вашей платформе разработки - Mac или Windows, которая игнорирует регистр букв для имен файлов, но не на сервере Linux, где имя файла должно быть в том же регистре.

0 голосов
/ 17 декабря 2010

Используйте getimagesize (), поскольку file_exists вернет false.

<a href="<?php echo $_url; ?>" title="<?php echo $_name; ?>">
<?php   
$logo2 = $_url.'/image/data/logo2.png';
$logo = $_url.'/image/data/logo.png';

if (getimagesize($logo2))  { 
    echo "<img src=".$logo2." alt=\"Logo\" style=\"border: none;\" />";
 } else {  
    echo "<img src=".$logo." alt=\"Logo\" style=\"border: none;\" />";
 } ?>
</a>
0 голосов
/ 17 декабря 2010

file_exists ожидает локальный путь , а не url .

...