2010-09-30 3 views
0

На сервере много фотографий, у них есть имена с пространством, примеры: home 3.png, мой новый car.jpg. И мне нужно получить все размеры изображений. Почему getimagesize() показывает ошибки с этими изображениями?php, getimagesize

Ошибка:

Warning: getimagesize(http://127.0.0.1/img 1.jpg) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found... 

Если я запускаю картину: http://127.0.0.1/img 1.jpg в браузере все хорошо (так хорошо ссылка).

Полный код:

<?php 
require_once('simple_html_dom.php'); 

$string = str_get_html('some text some text <img src = "http://127.0.0.1/img 1.jpg" /> text .... '); 

foreach($string->find('img') as $e) 
    $img[] = $e->src; 

$img_1 = getimagesize($img[0]); 
print_r($img_1); 
?> 
+1

Пожалуйста, укажите код, который вы используете. Кроме того, вы уверены, что использование оболочки 'http: //' здесь подходит? Вы знаете о возможности доступа к файлам с использованием пути абсолютной файловой системы (гораздо быстрее)? –

+0

Является ли сервер, выполняющий этот скрипт, работающим на том же сервере, на котором находится изображение? В противном случае причина этой ошибки, вероятно, в том, что вы получаете доступ к локальному серверу через 127.0.0.1, но сервер находится где-то в другом месте, где он не может получить доступ к вашему серверу. – poke

+0

Я не могу представить ни одного экземпляра, где не следует ссылаться на подобную петлю. – Incognito

ответ

1

Вы должны работать с файлами , а не URL.

+0

Использование URL-адреса полностью в порядке. См. Пример 3 в руководстве: http://php.net/manual/en/function.getimagesize.php – poke

+0

@poke NOT 'http: // 127.0.0.1' one –

+0

Col. Shrapnel> Что? – user319854

0

Основываясь на мой комментарий:

Убедитесь, что сервер работает скрипт PHP имеет фактический доступ к этому файлу. В этом случае, когда вы пытаетесь получить изображение с 127.0.0.1, php-сервер должен быть тем же сервером, на котором находится изображение.

Если вы пытаетесь запустить это с удаленного сервера, это, конечно, не работает. Когда вы открываете путь в своем браузере, вы получаете доступ к локальному серверу (на своем собственном компьютере), но внешний сервер не сможет получить к нему доступ таким образом. Если это в вашей сети, используйте вместо этого свое реальное имя IP или хоста; если это не в вашей сети, либо нужно сделать ваш локальный сервер общедоступным, либо просто переместить изображение в другое место.

Смежные вопросы