prog-it / Asterisk-CDR-Viewer-Mod

Simple and fast viewer for Asterisk CDRs and Recordings (Mod)
GNU General Public License v3.0
109 stars 80 forks source link

Не работает с apache 2.4.37 и php 7.2.12 [решено] #114

Open anutator opened 5 years ago

anutator commented 5 years ago

CentOS7. Ранее php 7.2.12 работал со стандартной версией 2.4.6, но я решила поставить свежую версию Apache. Добавила репозиторий CodeIT, поставила свежую версию Apache. Server version: Apache/2.4.37 (codeit) При попытке открыть страницу показывает типа такого:

quote($_REQUEST[$key]),1,-1); } $startmonth = is_blank($_REQUEST['startmonth']) ? date('m') : sprintf('%02d', $_REQUEST['startmonth']); $startyear = is_blank($_REQUEST['startyear']) ? date('Y') : $_REQUEST['startyear']; if (is_blank($_REQUEST['startday'])) { $startday = '01'; } elseif (isset($_REQUEST['startday']) && ($_REQUEST['startday'] > date('t', strtotime("$startyear-$startmonth-01")))) { $startday = $_REQUEST['startday'] = date('t', strtotime("$startyear-$startmonth")); } else { $startday = sprintf('%02d',$_REQUEST['startday']); } $starthour = is_blank($_REQUEST['starthour']) ? '00' : sprintf('%02d',$_REQUEST['starthour']); $startmin = is_blank($_REQUEST['startmin']) ? '00' : sprintf('%02d',$_REQUEST['startmin']); $startdate = "'$startyear-$startmonth-$startday $starthour:$startmin:00'"; $start_timestamp = mktime( $starthour, $startmin, 59, $startmonth, $startday, $startyear ); $endmonth = is_blank($_REQUEST['endmonth']) ?

Может надо php переустанавливать тоже?

# php -v
PHP 7.2.12 (cli) (built: Nov  8 2018 16:59:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.12, Copyright (c) 1999-2018, by Zend Technologie
anutator commented 5 years ago

Как всегда сама починила. Долго искала причину, но слава гуглу. Открыть файл vim /etc/httpd/conf.modules.d/00-mpm.conf Там у нас загружается модуль mpm_event. LoadModule mpm_event_module modules/mod_mpm_event.so Эту строку закомментируем и раскомментируем строку с mpm_prefork LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

Дело в том, что модуль библиотеки для php7 (libphp7.so) будет грузиться только если загружен prefork, что можно проверить в файле /etc/httpd/conf.modules.d/15-php.conf

# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#

# Cannot load both php5 and php7 modules
<IfModule !mod_php5.c>
  <IfModule prefork.c>
    LoadModule php7_module modules/libphp7.so
  </IfModule>
</IfModule>

<IfModule !mod_php5.c>
  <IfModule !prefork.c>
    # ZTS module is not supported, so FPM is preferred
    # LoadModule php7_module modules/libphp7-zts.so
  </IfModule>
</IfModule>
anutator commented 5 years ago

Есть другая ошибка теперь в логах (если логи не смотреть, то php выполняется, т.е. внешне все ок), т.е. переключение на prefork отключает совместимость с mod_http2

AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.

Так что надо теперь переключаться на php-fpm https://www.stephenrlang.com/2018/02/centos-7-apache-2-4-with-php-fpm/

prog-it commented 5 years ago

Советовал бы настроить nginx, Намного легче, чем Apache. Nginx с php-fpm у меня отлично работает (php 5.5.9). Но http2 пока еще нет в основной mainline ветке, скоро обещают. В http2 пока не вижу особой необходимости, мое мнение.

anutator commented 5 years ago

apache перевела на php-fpm, работает. Да мне неохота, чтобы ошибки постоянно появлялись в логе. Там вроде работе не мешало, но мне эти уведомления не нужны, лучше полезную инфу в ошибках видеть. Чтоб не мудрить с настройками по руководству из статьи, надо сразу ставить php-fpm и php-fpm-http (файл настроек для Apache, есть аналогичный для nginx). Это есть для разных версий php.

php56u-fpm-httpd.noarch : Apache HTTP Server configuration for PHP-FPM
php56u-fpm-nginx.noarch : Nginx configuration for PHP-FPM
php70u-fpm-httpd.noarch : Apache HTTP Server configuration for PHP-FPM
php70u-fpm-nginx.noarch : Nginx configuration for PHP-FPM
php71u-fpm-httpd.noarch : Apache HTTP Server configuration for PHP-FPM
php71u-fpm-nginx.noarch : Nginx configuration for PHP-FPM
php72u-fpm-httpd.noarch : Apache HTTP Server configuration for PHP-FPM
php72u-fpm-nginx.noarch : Nginx configuration for PHP-FPM
fpm2.x86_64 : Password manager with GTK2 GUI
php-fpm.x86_64 : PHP FastCGI Process Manager
php54-php-fpm.x86_64 : PHP FastCGI Process Manager
php55-php-fpm.x86_64 : PHP FastCGI Process Manager
php55w-fpm.x86_64 : PHP FastCGI Process Manager
php56u-fpm.x86_64 : PHP FastCGI Process Manager
php56w-fpm.x86_64 : PHP FastCGI Process Manager
php70u-fpm.x86_64 : PHP FastCGI Process Manager
php70w-fpm.x86_64 : PHP FastCGI Process Manager
php71u-fpm.x86_64 : PHP FastCGI Process Manager
php71w-fpm.x86_64 : PHP FastCGI Process Manager
php72u-fpm.x86_64 : PHP FastCGI Process Manager
php72w-fpm.x86_64 : PHP FastCGI Process Manager
rh-php70-php-fpm.x86_64 : PHP FastCGI Process Manager
rh-php71-php-fpm.x86_64 : PHP FastCGI Process Manager

Про nginx думаю. Может и правда лучше. Надо его пробовать.

anutator commented 5 years ago

Новая установка php для CentOS 8:

yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf module install php:remi-7.4