Ошибка PHP при отработке скриптов сайта
На сервере под управлением FreeBSD 10.0 работает web-сервер apache22 версии apache22-2.2.27_2, с прикрученным к нему языком php5 версии php5-5.4.28. При отладке нового сайта на CMS Textpattern (версия 4.5.5), вместо отображения страницы сайта в окне браузера выскакивает ошибка вида:Fatal error: Call to undefined function curl_init() in /usr/local/www/textpattern/lib/txplib_misc.php(812) : eval()'d code on line 968 |
В логе error работы apache22 аналогичная ошибка:
[Thu May 29 15:30:47 2014] [error] [client 12.34.56.78] PHP Fatal error: Call to undefined function curl_init() in /usr/local/www/textpattern/lib/txplib_misc.php(812) : eval()'d code on line 968, referer: http://www.site.ru/
Как оказалось, в моей системе отсутствовал порт php5-curl (The curl shared extension for php). Необходимо было доставить его в систему. Делаем следующее:
# cd /usr/ports # make search name=php5-curl | grep Path Path: /usr/ports/ftp/php5-curl # cd /usr/ports/ftp/php5-curl # make install clean # pkg info | grep php5-curl php5-curl-5.4.28 The curl shared extension for php # /usr/local/etc/rc.d/apache22 reload
Но ошибка в моем случае не пропала. Пришлось доставить соответствующее расширение для php5.
Делается это так:
# cd /usr/ports # make search name=php5-extensions | grep Path Path: /usr/ports/lang/php5-extensions # cd /usr/ports/lang/php5-extensions # make config
Отмечаем необходимое нам расширение:
И производим установку:
# make install clean
На всякий случай проверим файл /usr/local/etc/php/extensions.ini
на наличие единственной записи насчет этого расширения:
# less /usr/local/etc/php/extensions.ini | grep curl extension=curl.so
Если у вас также, то перезагрузите апач:
# /usr/local/etc/rc.d/apache22 reload
После выполнения указанных действий ошибка пропала, и сайт стал отображаться корректно.
Надеюсь, данная информация окажется кому-нибудь полезной.