У нас есть специальный скомпилированный php (5.6.32), который мы хотим начать работать с mysqli. У нас была старая скомпилированная версия (5.3.10), которая работала нормально.
У нас есть старый mysqli.so в
/usr/lib64/php/modules/mysqli.so
Мы компилируем php с
./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql --with-zlib --with-libdir=lib64 --with-openssl --with-curl --enable-soap --with-mysqli
Я также пытался
--with-mysqli=/usr/bin/mysql_config
Это подтверждает
checking for MySQLi support... yes
Однако, когда мы пытаемся запустить php, мы получаем ошибку …
HP Warning: PHP Startup: mysqli: Unable to initialize module
Module compiled with module API=20090626
PHP compiled with module API=20131226
Я думаю, это потому, что там есть старый файл mysqli.so, оставшийся от предыдущей компиляции?
Неважно, что мы пытаемся сделать, новый файл mysqli.so нигде не создается.
Должен ли php-компилятор создавать mysqli.so? (если нет, как мы воссоздаем это). Или есть другие идеи о том, как решить проблему?
config.nice показывает
'./configure' \
'--with-apxs2=/usr/local/apache2/bin/apxs' \
'--with-mysql' \
'--with-zlib' \
'--with-libdir=lib64' \
'--with-openssl' \
'--with-curl' \
'--enable-soap' \
'--with-mysqli' \
"$@"
Я думаю, что эта ошибка может быть на самом деле красная сельдь, я все еще тестирую. Mysqli, кажется, работает, только эта ошибка появляется вначале.
Так возможно ли, что mysqli каким-то образом встроен в бинарный файл, а mysqli не нужен?
Поэтому я просто закомментировал mysqli.so в файле php.ini. Так что эта ошибка больше не происходит (так как я предполагаю, что она не пытается загрузить старую .so lib).
Я до сих пор не понимаю, как работает mysqli, поэтому, если у кого-то есть лучший ответ, я с радостью приму.
Других решений пока нет …