Войти

Показать полную графическую версию : [решено] php52-5.2.17_2 не устанавливается из портов


Призрак
06-09-2011, 13:01
Здравствуйте Уважаемые участники дискуссии.

Я новичок во FreeBSD и прошу помощи.

В общем после установки системы (FreeBSD 8.2) я обновил дерево портов

#portsnap fetch extract
#portsnap fetch update

Затем я установил почти все, что нужно для WEB сервера (Apache22 и MySQL55), но при установке php52 столкнулся с проблемой:

#/usr/ports/lang/php52
#make install clean
===>php52-5.2.17_2 has known vinerabilities:
=>php -- NULL byte poisoning.
Reference: http://portaudit.FreeBsd.org/3761df02-0f9c-11e0-becc-0022156e8794.
=>Please update your ports tree and try again.
***Error code 1

Stop in /usr/ports/lang/php52
***Error code 1

Stop in /usr/ports/lang/php52

Еще я использовал утилиту portupgrade та же ошибка.

Кто-то наверно скажет, а не проще ли сделать так?

pkg_add -r php52

Нет, не проще! Мне в Apache нужна поддержка PHP (модуль libphp5.so), скомпилировать PHP из порта с поддержкой Apache я не могу (причина выше), а пакет устанавливается без поддержки Apache, следовательно установки модуля не происходит.

Помогите пожалуйста, я вынужден перейти временно на версию php5 пока не решится этот вопрос. Заранее спасибо.

vadblm
06-09-2011, 13:16
#make install clean
===>php52-5.2.17_2 has known vinerabilities:
=>php -- NULL byte poisoning.
Reference: http://portaudit.FreeBsd.org/3761df0...c-0022156e8794.
=>Please update your ports tree and try again. »
Отказывается ставить из-за известной уязвимости. А майнтайнер то ли забил на порт, то ли не успел обновить. Вы можете заставить систему игнорировать известные уязвимости, прописав в /etc/make.conf:

DISABLE_VULNERABILITIES=yes

или, что разумнее, не применять эту гайку глобально, а передать этот аргумент портапгрейду только при установке php52:

portupgrade -m DISABLE_VULNERABILITIES=yes php52


я вынужден перейти временно на версию php5 пока не решится этот вопрос. »
Чем PHP 5.3 не угодил?

Призрак
07-09-2011, 12:58
vadblm спасибо большое за помощь, разобрался. Но не кажется ли Вам, что в портах версия 5.3 и должна называться php53 а не php5? Вводят людей в заблуждение, особенно новичков.

Появилась другая проблема - то-ли у тех, кто выкладывает дерево портов одна извилина пунктиром, либо я в чем - то неправ. В общем:

#cd /usr/ports/databases/phpmyadmin
#make install clean

Затем после установки прописываю алиас как положено в файле httpd.conf, но при переходе на страницу phpmyadmin вижу следующее:

Fatal error: Call to undefined function _pgettext() in /usr/local/www/phpMyAdmin/libraries/core.lib.php on line 264

И PHP и MySQL, и Apache функционируют нормально.
И как мне работать вообще? Что-нибудь да не так. Помогите пожалуйста.

vadblm
07-09-2011, 13:12
Но не кажется ли Вам, что в портах версия 5.3 и должна называться php53 а не php5? »
Не кажется, но все вопросы по этому поводу к майнтайнеру порта.
Fatal error: Call to undefined function _pgettext() in /usr/local/www/phpMyAdmin/libraries/core.lib.php on line 264 »
Установите php5-gettext.

Призрак
07-09-2011, 14:34
vadblm, спасибо Вам большое, хочу заметить что есть ошибка в коде - до установки php5-gettext я переименовывал _pgettext в gettext но ошибка оставалась, после установки она исчезла. Но появилась другая:

The session extension is missing. Please check your PHP configuration.

PHP5-session установлен, файл php.ini находится в /usr/local/etc и подгружается. В чем может быть дело?

vadblm
07-09-2011, 14:43
phpinfo() покажите.

Призрак
07-09-2011, 15:15
Форум не дает подгружать длинные изображения, каким образом можно предоставить эту информацию?

vadblm
07-09-2011, 15:19
Ну ссылку дайте. Или, если пускаете в консоли, то вывод можно положить на pastebin или что-то подобное. Или прикрепить к сообщению архивом. Что вы, вчера что ли в интернеты вышли? :)

Призрак
07-09-2011, 15:24
Извините, не допер сразу. Отправляю

Призрак
07-09-2011, 15:25
Почему-то файл не прикрепился или мне так кажется?

vadblm
07-09-2011, 16:17
session не видать. Если это расширение точно установлено, то проверьте прописано ли оно в /usr/local/etc/php/extensions.ini:

extension=session.so

dmitryst
07-09-2011, 16:39
насколько я помню, нужно ставить еще и php-extensions

vadblm
07-09-2011, 16:47
нужно ставить еще и php-extensions »
php5-extensions это мета-порт, облегчающий установку расширений пачкой, а так их можно ставить и по отдельности.

dmitryst
07-09-2011, 16:50
php5-extensions это мета-порт, облегчающий установку расширений пачкой »
ну да, зато не будет потом моральных и физических страданий, что какой-то порт не стал или стал криво (сам пару раз переустанавливал рнр с нуля из-за одного расширения)

vadblm
07-09-2011, 17:09
сам пару раз переустанавливал рнр с нуля из-за одного расширения »
Хорошо хоть не всю систему ;)

dmitryst
07-09-2011, 18:18
php.ini находится в /usr/local/etc и подгружается. »
а попробуйте его убрать или так отредактировать, чтобы потом через phpinfo() посмотреть, а действительно ли читается этот файл

Призрак
09-09-2011, 08:44
Действительно странные вещи творились на неделе. Я выяснил, что была проблема с портами (наверно их в это время как-то изменяли, я понял это по тому, что у меня вчера обновилась программа, которая долго отказывалась обновляться (Unknown build error)).

Перед всеми операциями, перечисленными ниже, я вводил следующие команды:

#portsnap fetch update
#pkgdb -fu
#pkgdb -F

так что ошибок, связанных с деревом портов просто быть не могло (значит они были вызваны вытягиванием некорректных значений первой командой)

Я удалил php5-extensions (сделал это не через порт, а через команду удаления пакета):

#pkg_delete php5-extensions-*.* (где * - цифры версии)

но сами расширения не удалились! По идее они должны были удалиться автоматически. Мне пришлось удалять их вручную! Более того перед этим я сделал следующее:

#cd /usr/ports/lang/php5-extensions
#make deinstall

и система сообщает, что данное приложение не установлено, и его удаление невозможно! Хотя команда:

#pkg_version -v | grep php5

показала мне все установленные расширения, в том числе php5-extensions! Я даже лазил в папку /usr/local/etc/php/extensions.ini и смотрел там extension=session.so, все на месте было!

Пришлось мне удалять все расширения вручную:

#pkg_delete php5-****-5.3.8 (где * - название расширения)

Были удалены:

php5-mysql
php5-gettext
php5-mbstring
php5-curl
php5-openssl
php5-xmlrpc
php5-tokenizer
php5-ctype
php5-iconv
php5-bz2 (для suPHP)
php5-session
php5-zip
php5-zlib
php5-filter
php5-json
php5-mcrypt
php5-mysqli
phpMyAdmin-3.4.4

Затем я, не доверяя пока портам, установил все расширения пакетами, не используя php5-extensions:

#pkg_add -r php5-**** (где * - название расширения)

После этого я установил все-таки phpMyAdmin из портов:

#cd /usr/ports/databases/phpmyadmin
#make install clean

После этого запустил процесс обновления:

#portupgrade -arR

После обновления:

#apachectl restart
#/usr/local/etc/rc.d/mysql-server restart (на всякий случай)

После этого phpMyAdmin стал запускаться нормально и перестал ругаться на отсутствие расширений. Более того, исчезла ошибка:

Fatal error: Call to undefined function _pgettext() in /usr/local/www/phpMyAdmin/libraries/core.lib.php on line 264

которую выдавал phpMyAdmin при запуске (даже после установки расширения php5-gettext-5.3.8 и то оно должно было вылезти с зависимостями при установке phpMyAdmin, и то, чтобы устранить эту ошибку мне ранее пришлось исправить код в указанном файле, который вызвал ошибку (_pgettext - gettext), а после всех вышеперечисленных операций мне ничего исправлять не пришлось, все запустилось корректно!)

Все проблемы устранены, спасибо Вам!




© OSzone.net 2001-2012