2016-05-30 4 views
0

У меня есть некоторые проблемы на моем сервере при запуске getimagesize на удаленных URL-адресах.PHP getimagesize не работает с внешними ссылками

Например, если я запускаю этот код на моем локальном сервере он отлично работает и возвращает OK:

<?php 
$file = 'http://inspiring-photography.com/wp-content/uploads/2012/04/Culla-bay-rock-formations-Isle-of-Uist.jpg'; 
$pic_size = getimagesize($file); 
if (empty($pic_size)) 
{ 
    die('FALSE'); 
} 
die('OK'); 

?> 

Но если я запускаю тот же код на моем сервере я не могу заставить его работать должным образом. Можете ли вы помочь определить, какие настройки я должен попросить включить?

Я думаю, что некоторые из них могут быть вовлечены:

  1. mod_security
  2. safe_mode
  3. allow_url_fopen

Можете ли вы мне помочь в определении правильной конфигурации, чтобы это решить?

спасибо, что заранее.

+0

@RiggsFolly Извините, что? * мой сервер я не могу заставить его работать правильно * Сервер, вероятно, блокирует доступ к другим сайтам. Вы должны включить отчет об ошибках, чтобы показать нам реальное сообщение об ошибке. –

+2

Когда вы задаете вопрос об ошибке, ** ALWAYS ** публикует журнал ошибок. Чтобы включить отправку отчетов об ошибках в ваш php-код, добавьте 'error_reporting (E_ALL); ini_set ('display_errors', '1'); 'наверху вашего скрипта, что он возвращает? –

+0

звучит так, как руководство было либо не прочитано, не понято, либо не указано в письме. –

ответ

4

Ваша проблема связана с allow_url_fopen выключена. Либо включить ее на php.ini, или использовать curl для получения изображения:

function getImg($url){ 
    $curl = curl_init($url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $data = curl_exec($curl); 
    curl_close($curl); 
    return $data; 
} 

$url = "http://inspiring-photography.com/wp-content/uploads/2012/04/Culla-bay-rock-formations-Isle-of-Uist.jpg"; 
$raw = getImg($url); 
$im = imagecreatefromstring($raw); 
$width = imagesx($im); 
$height = imagesy($im); 
echo $width." x ".$height; 

SRC

+1

Большое спасибо @Pedro Lobito за вашу помощь, очень ценится. Как указано выше, allow_url_fopen включен, в любом случае моя служба поддержки могла решить, отключив safe_mode и отключив Apache mod_security. –

+0

Вы очень приветствуетесь @MightyGorgon –

1

Вы должны включить allow_url_fopen в свой файл php.ini, чтобы разрешить ему доступ к ресурсам, которые не являются локальными.

Это указано в официальном документе getimagesize в описании параметра filename.

+0

allow_url_fopen включен, во всяком случае, моя служба поддержки смогла решить, отключив safe_mode и отключив Apache mod_security. –

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