Как заставить скомпилированный php работать с apache?

Я скомпилировал php 7.4 для сервера centos 7. У меня также установлен apache 2.4.

Проблема в том, что я не знаю, что делать дальше, чтобы он заработал. Раньше у меня было 2 сайта, работающих с официальным пакетом, поэтому конфигурация должна быть в порядке - единственное, что было изменено, это php - полностью.Зачем мне этот скомпилированный php и почему мне не нравится пакет? Это потому, что мне нужна поддержка ZTS для php, которой нет в предварительно скомпилированной версии, и она необходима для параллельной поддержки (многопоточность)

В Windows вся эта компиляция php и обеспечение его работы было шуткой по сравнению с этим (это был как 1 день с 0 знаниями). Я только что настроил компилятор, скомпилировал, заменил папку php на веб-сервере, и он работал отлично, и все тесты на сайтах также проходили.

С другой стороны, в centos я скомпилировал php и некоторые расширения + дополнительные пакеты для работы. Когда я проверяю модули с помощью php -m , все они выглядят хорошо. Единственная проблема в том, что веб-сервер больше не загружает сайты. Я страдаю от этого уже четвертый день - всегда возникают проблемы нового типа.

После того, как я скомпилировал php, я заменил двоичный файл в двоичном коде PHP CLI. На самом деле я понятия не имею, правильно это делать или нет, потому что я не могу найти никакой информации об этой части, потому что большинство описаний заканчивается там, где вы запускаете команду make install или делаете немного дополнительных.

Так что мне нужно руководство от кого-то, кто может объяснить мне, что нужно сделать и почему это должно быть сделано.

Есть также php-fpm, скомпилированный в двоичном файле, но я не знаю, есть ли у него

Я также не знаю, как отладить эту ситуацию. Я могу связаться с сервером и увидеть страницу тестирования apache по умолчанию, поэтому, как и ожидалось, она немного не изменилась и работает.

Так что я хотел бы знать, это своего рода ключ к пониманию этого или какое-то объяснение того, какие файлы должны быть размещены, где и почему?

Спасибо!


Обновление после предложений:

Я снова прошел весь процесс - создал новый том из снимка, который я сделал ранее Я начал работать над этим и начал с нуля. Сегодняшний прогресс таков, что после этого не загружались даже модули - zend_opcache и mongodb. Теперь, после запуска cmd sudo make install , он четко говорит, где разместить модули: / usr / local / php7 / lib / php / extensions / no-debug-zts-20190902 / и в описании, которое я нашел, также сказано, где изменить файл ini, чтобы он работал: https://shaunfreeman.name/blog/compiling-php-7-on-centos

sudo vim /usr/local/php7/etc/conf.d/modules.ini 

Но это больше ничего не делает, как раньше. Существует также файл php.ini, который предлагается скопировать:

sudo cp -v ./php.ini-production /usr/local/php7/lib/php.ini

Но изменение этого файла php.ini для динамической загрузки расширений также ничего не дает, поэтому я предполагаю, что php, который должен использовать этот файл ini, не может видеть файл вообще. Итак, я проверил , где находится php , и там написано: php: / usr / share / php / usr / local / php7 / bin / php

Второй - это то, что я поместил в $ PATH , но я думаю, что порядок загрузки заключается в загрузке первой. Он был создан при первой установке make, и этот php-файл не изменяется при повторном запуске. Может, это вообще не имеет к этому никакого отношения.

Затем у меня возникла еще одна проблема с httpd, когда я запустил httpd -V cmd:

AH00526: Syntax error on line 216 of /etc/httpd/conf.d/ssl.conf:
SuexecUserGroup configured, but suEXEC is disabled: Invalid owner or file mode for /usr/sbin/suexec

, у которого было разрешение 510 с root : пользователь apache: пара групп. Изменение на 0750 решило эту проблему. Я также не знаю, реализовано ли это - я думаю, что на этот раз так и должно быть, потому что в описании, которое я нашел о suexec, говорится, что он запускает php-cgi. Но это не помогло в общей ситуации.

Затем я проверил модули httpd, у меня действительно был этот модуль в папке / etc / httpd / modules / : mod_proxy_fcgi.so , что не означает, что он запускает php с этим, но я могу предположить, не проверяя файл - я должен подтвердить это из конфигурационного файла.

В папке conf.d есть файл : php.conf.rpmsave , где написано:

    # Proxy declaration
<Proxy "unix:/var/run/php-fpm/default.sock|fcgi://php-fpm">
        # we must declare a parameter in here (doesn't matter which) or it'll not register the proxy ahead of time
        ProxySet disablereuse=off
</Proxy>

# Redirect to the proxy
<FilesMatch \.php$>
        SetHandler proxy:fcgi://php-fpm
</FilesMatch>

Я не уверен, имеет ли это значение здесь, потому что это может быть только сохраненный файл конфигурации для предыдущей версии php менеджера пакетов. Также, если я скажу: sudo find / -name php.conf или sudo find / -name * hp.con * , то я верну только этот один файл, поэтому кажется, что скомпилированная версия не сгенерировала файл конфигурации для apache - может быть, это и не нужно, но, возможно, здесь проблема. Переименование его с помощью mv в php.conf фактически изменяет ответ по умолчанию с порта 80 с причудливого Testing 123 .. на 503 Service Unavailable. Это может быть связано с тем, что в прошлый раз, когда я компилировал php, я исключил php-fpm, поэтому сейчас я собираюсь перекомпилировать его еще раз. Перезапуск служб httpd и php-fpm после того, как это было сделано, не помог в ситуации.

Из того, что я вижу, в системе возможно иметь несколько версий файлов сценария php - что отчасти логично - и cgi - версии fcgi, fpm и cli также являются разными скриптами.

Распределение потоков возможно только из версии CLI,так что, возможно, если бы я использовал версию пакета для сайтов, а затем для потоковой передачи, я бы назвал скомпилированную версию CLI php, тогда она могла бы делать то, что я действительно хочу - в качестве плана B.

Также команда php не распознается после того, как я установил скомпилированные версии с помощью команды make install каждый раз. Возможно, это то, о чем должен позаботиться установщик, а может и нет, в конце концов я поместил скомпилированную двоичную папку в переменную $ PATH, а также добавил ее в сценарий .sh в папке profile.d

0
задан 10 March 2020 в 18:54
1 ответ

Не заменяйте никакие файлы, предоставленные вашим дистрибутивом, так как это серьезно повредит вашу систему. Правильное место для самкомпилированных версий находится в / usr / local / .

Для CentOS 7 вы можете использовать, например, эти руководства:

1
ответ дан 30 March 2020 в 01:22

Теги

Похожие вопросы