Страница 1 из 1

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-10 20:41:18
Volaner
PHP работает, <? print('Hello world!'); ?> печатает. Но при попытке создать соединение с базой, выдаётся сообщение - Call to undefined function mysql_connect(). При этом, если файл index.php запустить через php в консоли (#php index.php), то всё работает, и соединение с базой создаётся и данные выбираются.
В логах Apache, вот такое безобразие:

Код: Выделить всё

PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/20131226/mysql.so' - /usr/local/lib/php/20131226/mysql.so: Undefined symbol "executor_globals" in Unknown on line 0
И так про все модули, не только с mysql.so. Версия PHP и всех расширений совпадает - 5.6.27. Кто знает, с чем связана ошибка Undefined symbol "executor_globals" и что с ней делать?

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-11 15:09:08
snorlov
Я бы для начала пересобрал весь софт 2-а раза...

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-11 23:28:25
Volaner
snorlov писал(а):Я бы для начала пересобрал весь софт 2-а раза...
Да уже пересобрал. Все порты физически удалял, потом востанавливал - #portsnap extract, чтоб уже точно ничего кривого не осталось. Всё четно...

Отправлено спустя 3 минуты 4 секунды:
У меня такое впечатление, что у Apache не хватает чего то, благодаря чему, он и понимает синтаксис php расширений. Вот что это за executor_globals, какой компонент у Apache отвечает за понимание этих php_extansion. Может быть раньше, этот компонент был включён в состав Apache, а теперь его отдельно ставить надо?

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-12 1:44:32
Amadeus
Пожалуйста

Первое:

Код: Выделить всё

apachectl -t -D DUMP_MODULES |  grep php

Второе:

Код: Выделить всё

php -m | grep mysql

Третье:

Код: Выделить всё

/usr/ports/www/mod_php56]# make showconfig | grep ZTS 
Отправлено спустя 6 минут 21 секунду:
Чем по вашему мнению веб сервер, основная задача которого не обработка кода, пользуется ?

mod_php стоит вообще?)

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-12 13:19:55
Volaner
Amadeus писал(а):Чем по вашему мнению веб сервер, основная задача которого не обработка кода, пользуется ?
Веб сервер пользуется интерпретатором, в данном случае PHP, в данном случае работа с которым, реализуется mod_php. А вот чем он пользуется, что именно использует, благодаря чему он понимает синтаксис расширений - я не знаю, но именно с этим видимо и проблемы.
Amadeus писал(а):mod_php стоит вообще?)
Еслиб не стоял, <? print('Hello world")?> бы не работало, а оно работает. У меня работает сам PHP, но только базовый функционал, ни одно расширение не прикручивается, все выдают ошибку.

Изображение

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-12 17:47:41
Amadeus
Ну вот вы сами написали причину вашей проблемы)

у вас два выхода

1) Пересобрать php с поддежкой ZTS. Потом так же потом так же поступить с экстеншенами (точнее тут просто персобрать, так как они берут ее с основны)

2) Пересобрать mod_php без ZTS.


Судя по всему, в данном случае лучше поступить вторым путём.

А вот чем он пользуется, что именно использует, благодаря чему он понимает синтаксис расширений - я не знаю, но именно с этим видимо и проблемы.
Немного запутались в понятиях. У mod_phpX нет такой вещи, как "Cущность для определения расширений". Единственное существенное отличие - ZTS. (zend thread saferty)

Оно если в крадце включается для того что бы в апаче работал event mpm. Если у вас в нем нет строгой необходимости, то решение 2, если есть - решение 1

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-12 20:57:27
Amadeus
Дополню насчет этого
что бы в апаче работал event mpm
Работал с php. С другими языками в этом плане проще.

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-17 2:41:11
Volaner
Amadeus писал(а):Ну вот вы сами написали причину вашей проблемы)

у вас два выхода

1) Пересобрать php с поддежкой ZTS. Потом так же потом так же поступить с экстеншенами (точнее тут просто персобрать, так как они берут ее с основны)

2) Пересобрать mod_php без ZTS.
PHP я изначально ставил с поддержкой ZTS, и у mod_php поддержка ZTS тоже включена была.

Ради интереса, поставил nginx, который работает с php через FPM а не mod_php, ошибки были те же.

В итоге, поудалял PHP, mod_php и все расширения. Установил всё заново через pkg, и модули заработали, и через mod_php в apache, и через FPM в nginx. До этого, я несколько раз переставлял всё через порты, делая #make rmconfig и всё перенастраивая, всё было четно. В общем, не понятно, что за фигня происходит в портах, факт в том, что собираются PHP и его расширения, которые не совместимы друг с другом....

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-17 10:00:17
guest
Volaner писал(а):
Amadeus писал(а):Ну вот вы сами написали причину вашей проблемы)

у вас два выхода

1) Пересобрать php с поддежкой ZTS. Потом так же потом так же поступить с экстеншенами (точнее тут просто персобрать, так как они берут ее с основны)

2) Пересобрать mod_php без ZTS.
PHP я изначально ставил с поддержкой ZTS, и у mod_php поддержка ZTS тоже включена была.

Ради интереса, поставил nginx, который работает с php через FPM а не mod_php, ошибки были те же.

В итоге, поудалял PHP, mod_php и все расширения. Установил всё заново через pkg, и модули заработали, и через mod_php в apache, и через FPM в nginx. До этого, я несколько раз переставлял всё через порты, делая #make rmconfig и всё перенастраивая, всё было четно. В общем, не понятно, что за фигня происходит в портах, факт в том, что собираются PHP и его расширения, которые не совместимы друг с другом....
Факт в том, что Вы методом тыка - натыкали опции при конфигурации портов, из-за
которых неверно собрали php и модули.

Чтобы немного представлять: то что Вы ставите через pkg - это пакеты, собранные из ПОРТОВ с default'ными
опциями.
Только пару дней назад, собрал apache и с worker и с event и php соответственно + mod_php - все
работает без проблем.

Вывод: devhands

Не работает связка Apache 2.4 + MySQL 5.6 + PHP 5.6 на FreeBSD 10.3

Добавлено: 2016-11-17 17:19:09
Amadeus
PHP я изначально ставил с поддержкой ZTS, и у mod_php поддержка ZTS тоже включена была.
Значит либо там либо там не была включена. Мы не в стране ОЗ живём.

Вам верно заметили - пакеты из репозиториев это пакеты собранные из портов.

Отправлено спустя 1 час 5 минут 33 секунды:

Код: Выделить всё

[root@nalog-rev /]#  pkg query -e "%n=php55" "%n-%v %Ok %Ov"
php55-5.5.38_2 CGI on
php55-5.5.38_2 CLI on
php55-5.5.38_2 DEBUG off
php55-5.5.38_2 DTRACE off
php55-5.5.38_2 EMBED off
php55-5.5.38_2 FPM on
php55-5.5.38_2 IPV6 on
php55-5.5.38_2 LINKTHR on
php55-5.5.38_2 MAILHEAD off
php55-5.5.38_2 ZTS off
[root@nalog-rev /]# pkg query -e "%n=mod_php55" "%n-%v %Ok %Ov"
mod_php55-5.5.38_2 AP2FILTER off
mod_php55-5.5.38_2 DEBUG off
mod_php55-5.5.38_2 DTRACE off
mod_php55-5.5.38_2 IPV6 on
mod_php55-5.5.38_2 LINKTHR on
mod_php55-5.5.38_2 MAILHEAD off
mod_php55-5.5.38_2 ZTS off
[root@nalog-rev /]# pkg query -e "%n=php55-mysql" "%n-%v %Ok %Ov"
php55-mysql-5.5.38_1 MYSQLND on
А то так, на вскидку, примерно в такой же ситуации как у вас, когда пришлось тянуть бинарники. А не собирать. Удивительное дело да? Именно то, о чем говорилось в самом начале