file_exists() не работает, но когда в браузере указан URL изображения, изображение отображается

file_exists не работает!! Но когда в браузере указывается URL ($img в коде), отображается изображение. я знаю file_exists() занимает только жесткий диск, но я мог понять, помогите, пожалуйста..

include_once("../inc/inc_constants.php");

include_once("database/db.php");

include_once("includes/global.php");

ini_set('max_execution_time',300);

         $sql="select plan_image_name from mp_new_project_images
                  where project_code in
                  (select project_code from mp_new_project
                    where project_status='Active' ) ";

           $sql_result=mysql_query($sql) or die(mysql_error());



        while($sqlrow=mysql_fetch_array($sql_result))
        {
          //HOME is "http://ip address/"

    $img  = HOME."images/properties/thumbs_400/".$sqlrow['plan_image_name']." ";

    if(file_exists($img))
    {

    $dest =HOME."images/properties/thumbs_400/compress_50/".$sqlrow['plan_image_name']." ";
    $dest1=HOME."images/properties/thumbs_400/compress_20/".$sqlrow['plan_image_name']." ";
    $dest2=HOME."images/properties/thumbs_400/compress_10/".$sqlrow['plan_image_name']." ";

    $size = getimagesize($img);

    switch($size['mime']) {
        case 'image/jpeg':
            $im=imagecreatefromjpeg($img);
            imagejpeg($im,$dest,50);
            imagejpeg($im,$dest1,20);
            imagejpeg($im,$dest2,10);
        break;
        case 'image/png':
             $im = imagecreatefrompng($img);
             imagepng($im,$dest,50);
             imagepng($im,$dest1,20);
             imagepng($im,$dest2,10);
       break;
        case 'image/gif':
            $im = imagecreatefromgif($img);
            imagegif($im,$dest,50);
            imagegif($im,$dest1,20);
            imagegif($im,$dest2,10);
        break;
        default:
            return false;
        break;
        }
    }

}

3 ответа

В функции file_exisits вместо HOME используйте физический путь. физический путь - что-то вроде этого "/var/www/public_html/"

используйте функцию phpinfo(), чтобы узнать физический путь

ИЛИ ЖЕ

использование

  dirname(__FILE__) . DIRECTORY_SEPARATOR 

ВЕРНО, чтобы получить физический путь динамически.

Имя файла должно быть Path to the file or directory не IP-адрес

'HOME' constant should be /var/www/html not ('http://url') for example 

$img  = HOME."images/properties/thumbs_400/".$sqlrow['plan_image_name']." ";

if(file_exists($img)) {

}

Этот код у вас есть:

//HOME is "http://ip address/"

$img  = HOME."images/properties/thumbs_400/".$sqlrow['plan_image_name']." ";

if(file_exists($img))
{

Не будет работать. Функция file_exists() ожидает путь к локальной директории. Вы можете использовать fopen() для удаленного пути.

$handle = fopen("http://www.example.com/", "r");

if (!$handle)
  {
    //no file
  }
else
  {
    // file exists
  }

http://php.net/manual/en/function.fopen.php

Я считаю, что это работает с IP-адресами, но будьте осторожны, так как IP-адреса довольно часто используются совместно.

Другие вопросы по тегам