2015-02-12 2 views
2

Сервер, на котором я нахожусь, был недавно обновлен, а PHP - от 5.2 до 5.5. У меня есть сценарий, который использует getimagesize(), и он отлично работал на 5.2, но теперь функции зависают бесконечно на 5.5. Я не получаю никаких кодов ошибок, никакого возвращаемого значения false и никакого возвращаемого значения вообще. На основе некоторых из других постов вокруг, я проверил некоторые «стандартные» вещи:getimagesize зависает неопределенно

  • allow_url_fopen установлен в «на» в среде PHP
  • Я использую абсолютные пути файлы, начиная с https:// и заканчивающимся в .png
  • файлы существуют
  • даже с ini_set('display_errors', 1) и error_reporting(E_ALL), сообщения об ошибках не отображаются

Я попытался тестирования функция с использованием Chrome, Firefox и CLI, но ничего не работает. Есть ли что-нибудь еще, что я могу проверить?

+1

Что происходит, когда вы пытаетесь использовать путь к файлу? – Rounin

+0

wow, я действительно получаю информацию возвращенную! почему файловый путь сервера работает, но URL-адрес не работает, даже когда мои изображения находятся в той же папке, что и мой скрипт? – wikenator

+0

Ах. Хорошо. Рад, что сработало для вас. У меня была догадка, что, вероятно, это будет просто (казалось бы, безобидная) вещь, когда я прочитаю ваш вопрос выше. Я считаю, что правильное правило: при использовании файловых путей с php-функциями предпочитайте абсолютные относительные пути к файлам - и если вы выберете абсолютный, убедитесь, что это абсолютный * сервер * путь к файлу. (См. Мой ответ ниже ...) – Rounin

ответ

0

При использовании абсолютных путей файлов с функцией getimagesize(), убедитесь, что абсолютный путь_к_файлом является абсолютным сервером путь_к_файла, а не только домен, TLD и путь_к_файла, как показан в браузере URI панели.

То же самое относится и к использованию абсолютных путей файлов с:

include

scandir()

rmdir()

unlink()

и многие другие PHP функции.

+0

Насколько я вижу, в документации PHP нет ничего, что указывало бы тип требуемого пути к файлу. Почему функция, подобная этой, работает с URI в старой версии PHP? – wikenator

+0

Единственное, что я могу придумать, - и это я размышляю, а не давая авторитетный ответ, - то, что более ранние версии PHP имели менее формальные требования (т. Е. Функция работала с любым типом файла), и эти требования были позже подтянутый. – Rounin