Не запускается Apache с руганью на PHP

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Не запускается Apache с руганью на PHP

Сообщение Фантом »

Наткнулся на странную проблему. Есть типовая установка OpenSUSE Tumbleweed, на которой я пытаюсь настроить Apache (с настройками фактически по умолчанию). При попытке запуска получается ошибка "Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP."

Гуглеж дал кучу описаний подобной ситуации для разных дистрибутивов, но как-то все предлагаемые рецепты не сработали. Если важно, нужен PHP8, хотя с PHP7 получается то же самое. Никто не может описать какой-нибудь работающий рецепт или дать на него ссылку?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Не запускается Apache с руганью на PHP

Сообщение Bizdelnick »

Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Re: Не запускается Apache с руганью на PHP

Сообщение Фантом »

Проблема в том, что тут нет ничего подобного. В /etc/apache2 такая внутренняя структура:

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

.
├── charset.conv
├── conf.d
│   ├── httpd-encoding.conf
│   ├── manual.conf
│   ├── mod_auth_mellon.conf
│   ├── mod_evasive.conf
│   ├── mod_fcgid.conf
│   ├── mod_maxminddb.conf
│   ├── mod_nss.conf
│   ├── mod_perl.conf
│   ├── mod_php8.conf
│   └── nagios.conf
├── default-server.conf
├── errors.conf
├── global.conf
├── httpd.conf
├── listen.conf
├── listen_nss.conf
├── loadmodule.conf
├── magic
├── mime.types -> ../mime.types
├── mod_autoindex-defaults.conf
├── mod_cgid-timeout.conf
├── mod_info.conf
├── mod_log_config.conf
├── mod_mime-defaults.conf
├── mod_mono.conf
├── mod_nss.d
│   ├── cert9.db
│   ├── install.log
│   ├── key4.db
│   └── pkcs11.txt
├── mod_perl-startup.pl
├── mod_reqtimeout.conf
├── mod_status.conf
├── mod_userdir.conf
├── mod_usertrack.conf
├── protocols.conf
├── server-tuning.conf
├── ssl.crl
│   └── README.CRL
├── ssl.crt
│   └── README.CRT
├── ssl.csr
│   └── README.CSR
├── ssl-global.conf
├── ssl.key [error opening dir]
├── ssl.prm
│   └── README.PRM
├── sysconfig.d
│   ├── global.conf
│   ├── include.conf
│   └── loadmodule.conf
├── uid.conf
└── vhosts.d
    ├── vhost-nss.template
    ├── vhost-ssl.template
    ├── vhost.template
    └── YaSTsave
        └── vhost-nss.template
Ну и везде, где хотя бы теоретически могут подключаться модули, подобных строк нет. Зато в loadmodule.conf (и не только) есть структура такого вида:

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

<IfModule prefork.c>
    LoadModule actions_module                 /usr/lib64/apache2-prefork/mod_actions.so
    LoadModule alias_module                   /usr/lib64/apache2-prefork/mod_alias.so
    LoadModule auth_basic_module              /usr/lib64/apache2-prefork/mod_auth_basic.so
    LoadModule authn_file_module              /usr/lib64/apache2-prefork/mod_authn_file.so
    LoadModule authz_host_module              /usr/lib64/apache2-prefork/mod_authz_host.so
    LoadModule authz_groupfile_module         /usr/lib64/apache2-prefork/mod_authz_groupfile.so
    LoadModule authz_user_module              /usr/lib64/apache2-prefork/mod_authz_user.so
    LoadModule autoindex_module               /usr/lib64/apache2-prefork/mod_autoindex.so
    LoadModule cgi_module                     /usr/lib64/apache2-prefork/mod_cgi.so
    LoadModule dir_module                     /usr/lib64/apache2-prefork/mod_dir.so
    LoadModule env_module                     /usr/lib64/apache2-prefork/mod_env.so
    LoadModule expires_module                 /usr/lib64/apache2-prefork/mod_expires.so
    LoadModule include_module                 /usr/lib64/apache2-prefork/mod_include.so
    LoadModule log_config_module              /usr/lib64/apache2-prefork/mod_log_config.so
    LoadModule mime_module                    /usr/lib64/apache2-prefork/mod_mime.so
    LoadModule negotiation_module             /usr/lib64/apache2-prefork/mod_negotiation.so
    LoadModule setenvif_module                /usr/lib64/apache2-prefork/mod_setenvif.so
    LoadModule ssl_module                     /usr/lib64/apache2-prefork/mod_ssl.so
    LoadModule socache_shmcb_module           /usr/lib64/apache2-prefork/mod_socache_shmcb.so
    LoadModule userdir_module                 /usr/lib64/apache2-prefork/mod_userdir.so
    LoadModule reqtimeout_module              /usr/lib64/apache2-prefork/mod_reqtimeout.so
    LoadModule authn_core_module              /usr/lib64/apache2-prefork/mod_authn_core.so
    LoadModule authz_core_module              /usr/lib64/apache2-prefork/mod_authz_core.so
</IfModule>
<IfModule worker.c>
    LoadModule actions_module                 /usr/lib64/apache2-worker/mod_actions.so
    LoadModule alias_module                   /usr/lib64/apache2-worker/mod_alias.so
    LoadModule auth_basic_module              /usr/lib64/apache2-worker/mod_auth_basic.so
    LoadModule authn_file_module              /usr/lib64/apache2-worker/mod_authn_file.so
    LoadModule authz_host_module              /usr/lib64/apache2-worker/mod_authz_host.so
    LoadModule authz_groupfile_module         /usr/lib64/apache2-worker/mod_authz_groupfile.so
    LoadModule authz_user_module              /usr/lib64/apache2-worker/mod_authz_user.so
    LoadModule autoindex_module               /usr/lib64/apache2-worker/mod_autoindex.so
    LoadModule cgi_module                     /usr/lib64/apache2-worker/mod_cgi.so
    LoadModule dir_module                     /usr/lib64/apache2-worker/mod_dir.so
    LoadModule env_module                     /usr/lib64/apache2-worker/mod_env.so
    LoadModule expires_module                 /usr/lib64/apache2-worker/mod_expires.so
    LoadModule include_module                 /usr/lib64/apache2-worker/mod_include.so
    LoadModule log_config_module              /usr/lib64/apache2-worker/mod_log_config.so
    LoadModule mime_module                    /usr/lib64/apache2-worker/mod_mime.so
    LoadModule negotiation_module             /usr/lib64/apache2-worker/mod_negotiation.so
    LoadModule setenvif_module                /usr/lib64/apache2-worker/mod_setenvif.so
    LoadModule ssl_module                     /usr/lib64/apache2-worker/mod_ssl.so
    LoadModule socache_shmcb_module           /usr/lib64/apache2-worker/mod_socache_shmcb.so
    LoadModule userdir_module                 /usr/lib64/apache2-worker/mod_userdir.so
    LoadModule reqtimeout_module              /usr/lib64/apache2-worker/mod_reqtimeout.so
    LoadModule authn_core_module              /usr/lib64/apache2-worker/mod_authn_core.so
    LoadModule authz_core_module              /usr/lib64/apache2-worker/mod_authz_core.so
</IfModule>

<IfModule event.c>
    LoadModule actions_module                 /usr/lib64/apache2-event/mod_actions.so
    LoadModule alias_module                   /usr/lib64/apache2-event/mod_alias.so
    LoadModule auth_basic_module              /usr/lib64/apache2-event/mod_auth_basic.so
    LoadModule authn_file_module              /usr/lib64/apache2-event/mod_authn_file.so
    LoadModule authz_host_module              /usr/lib64/apache2-event/mod_authz_host.so
    LoadModule authz_groupfile_module         /usr/lib64/apache2-event/mod_authz_groupfile.so
    LoadModule authz_user_module              /usr/lib64/apache2-event/mod_authz_user.so
    LoadModule autoindex_module               /usr/lib64/apache2-event/mod_autoindex.so
    LoadModule cgi_module                     /usr/lib64/apache2-event/mod_cgi.so
    LoadModule dir_module                     /usr/lib64/apache2-event/mod_dir.so
    LoadModule env_module                     /usr/lib64/apache2-event/mod_env.so
    LoadModule expires_module                 /usr/lib64/apache2-event/mod_expires.so
    LoadModule include_module                 /usr/lib64/apache2-event/mod_include.so
    LoadModule log_config_module              /usr/lib64/apache2-event/mod_log_config.so
    LoadModule mime_module                    /usr/lib64/apache2-event/mod_mime.so
    LoadModule negotiation_module             /usr/lib64/apache2-event/mod_negotiation.so
    LoadModule setenvif_module                /usr/lib64/apache2-event/mod_setenvif.so
    LoadModule ssl_module                     /usr/lib64/apache2-event/mod_ssl.so
    LoadModule socache_shmcb_module           /usr/lib64/apache2-event/mod_socache_shmcb.so
    LoadModule userdir_module                 /usr/lib64/apache2-event/mod_userdir.so
    LoadModule reqtimeout_module              /usr/lib64/apache2-event/mod_reqtimeout.so
    LoadModule authn_core_module              /usr/lib64/apache2-event/mod_authn_core.so
    LoadModule authz_core_module              /usr/lib64/apache2-event/mod_authz_core.so
</IfModule>
По идее, надо как-то заставить его выбирать первый блок, но вот как?.. Такую настройку нигде найти не удалось
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Не запускается Apache с руганью на PHP

Сообщение Bizdelnick »

Нет — так добавьте. Модуль-то сам есть, главное?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Re: Не запускается Apache с руганью на PHP

Сообщение Фантом »

Добавить - не проблема (и это я уже делал). Вопрос в том, где убрать неправильный.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Не запускается Apache с руганью на PHP

Сообщение Bizdelnick »

grep -RF mpm_ /etc/apache2
Добавлено (13:27):
apachectl -M
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Re: Не запускается Apache с руганью на PHP

Сообщение Фантом »

Первое выдает вот что:

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

/etc/apache2/listen.conf:# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#listen
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#serverlimit
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestsperchild
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#minsparethreads
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxsparethreads
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadlimit
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#threadsperchild
/etc/apache2/server-tuning.conf:	# https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestsperchild
Второе:

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

[Thu Nov 25 11:51:04.903703 2021] [php:crit] [pid 27834:tid 140502702325888] Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe.  You need to recompile PHP.
AH00013: Pre-configuration failed
Что во всем этом нужно было увидеть?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Не запускается Apache с руганью на PHP

Сообщение Bizdelnick »

Фантом писал:
25.11.2021 11:52
Что во всем этом нужно было увидеть?
Теоретически, в первом — откуда берётся mpm_event_module, во втором — какие вообще модули загружены. А если отрубить в конфиге php, вторая команда что скажет?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Re: Не запускается Apache с руганью на PHP

Сообщение Фантом »

Попробовал отключить все модули с PHP, теперь вылезло

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

AH00526: Syntax error on line 1 of /etc/apache2/conf.d/mod_auth_mellon.conf:
Invalid command 'MellonCacheSize', perhaps misspelled or defined by a module not included in the server configuration
Но это, возможно, уже последствия моего ковыряния в конфигах. Надо будет переставить и попробовать сначала.
Спасибо сказали:
Аватара пользователя
Фантом
Сообщения: 452
ОС: openSUSE

Re: Не запускается Apache с руганью на PHP

Сообщение Фантом »

В общем, вроде получилось. Экспериментально выяснилось, что "не любит" он именно PHP7. Если поставить только PHP8, то все работает.
Спасибо сказали:
Ответить