Давайте начнем говорить, что я прочитал это , это и это в блоге Реми, поскольку вопрос касался этих репозиториев. Записи в блоге мне совсем не помогают или мне что-то здесь не хватает, но я не уверен, что именно. Ниже я расскажу, какие шаги я выполнил, и посмотрим, что я делаю не так. Я планирую установить PHP 5.6.x и PHP 7.0 как SCL (потому что мне нужно протестировать некоторые приложения на обоих, и мне нужно сохранить поддержку PHP 5.6.x из-за некоторой разработки Wordpress), и я буду использовать Apache 2.4.x через SetHandler так что шаги ниже:
Установите инструменты Software Collections:
yum install scl-utils
Загрузите пакет с репозиторием для вашей системы (в данном случае для httpd24)
wget http://www.softwarecollections.org/en/scls/rhscl/httpd24/epel-6-x86_64/download/rhscl- httpd24-epel-6-x86_64.noarch.rpm
Установите пакет репо:
yum install rhscl-httpd24-epel-6-x86_64.noarch.rpm
Установить коллекцию:
yum install httpd24
Начните использовать коллекции программного обеспечения:
scl enable httpd24 bash
Запустить службу httpd24 (опция по умолчанию)
Служба httpd24-httpd start
Установить PHP56 как SCL:
yum install php56 php56-php-common php56-php-cli php56-php-fpm php56-php-gd php56-php-intl php56-php-mbstring php56-php-mcrypt php56 -php-opcache php56-php-pdo php56-php-pear php56-php-pecl-apcu php56-php-imagick php56-php-pecl-xdebug php56-php-pgsql php56-php-xml php56-php-mysqlnd php56- php-pecl-jsonc php56-php-pecl-zip php56-php-process php56-runtime
Запуск PHP56-FPM:
service php56-php-fpm start
Установить PHP70 как SCL:
yum install php70 php70-php-common php70-php-cli php70-php-fpm php70-php-gd php70-php-intl php70-php-mbstring php70-php-mcrypt php70 -php-opcache php70-php-pdo php70-php-pear php70-php-pecl-apcu php70-php-imagick php70-php-pecl-xdebug php70-php-pgsql php70-php-xml php70-php-mysqlnd php70- php-pecl-jsonc php70-php-pecl-zip php70-php-process php70-runtime
Тестовый Apache установлен и запущен:
http: // mylocalip
И успешно. Я вижу страницу Apache по умолчанию для RedHat / CentOS. Пока все хорошо. Я создал файл в папке /var/www/html/info.php
со следующим кодом:
<?php
phpinfo();
?>
Когда я пытаюсь получить доступ, запустив:
http://mylocalip/info.php
Он говорит, что файл не найден, поэтому Apache собирается не в то место, это нормально, тогда я редактирую файл в /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf
и меняю DocumentRoot
с / opt / rh / httpd24 / root / var / www / html
в / var / www / html
, и я делал одно и то же изменение везде, где обнаруживал ту же проблему , я перезапустили Apache и попробовали снова, но у меня та же ошибка. Я проверил разрешения для / var / www / html
, и вот как они выглядят:
# ls -l /var/www/
drwxrwsr-x 3 apache root 4096 Nov 13 04:51 html
чего мне здесь не хватает? Что я делаю не так? Может ли кто-нибудь дать мне какие-нибудь идеи или помочь по этому поводу?
Я тестировал те же шаги, у меня это работает: (
Убедитесь, что вы изменили все и только / opt / rh / httpd24 / root / var / www на / var / www (несмотря на то, что я не совсем понимаю, зачем вам это нужно):
# grep www /opt/rh/httpd24/root/etc/httpd/conf/httpd.conf | grep -v "^#"
DocumentRoot "/var/www/html"
<Directory "/var/www">
<Directory "/var/www/html">
# Redirect permanent /foo http://www.example.com/bar
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<Directory "/var/www/cgi-bin">
Затем, пропущенные в вышеуказанных шагах: переключите php70-php-fpm на прослушивание другого порта (для меня 9002) и установите для него правильный SELInux:
# semanage port -a -t http_port_t -p tcp 9002
Затем я создаю 2 имени (el6php56 и el6php70) для управления виртуальным хостом и добавляю файл конфигурации Apache для перенаправления файлов PHP на каждом виртуальном хосте в правильную службу FPM:
# cat /opt/rh/httpd24/root/etc/httpd/conf.d/vhost.conf
<VirtualHost *:80>
ServerName el6php56
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerName el6php70
<FilesMatch \.php$>
SetHandler "proxy:fcgi://127.0.0.1:9002"
</FilesMatch>
</VirtualHost>
Затем (по умолчанию / первый виртуальный хост будет использовать php 5.6)
Я сам столкнулся с этим. Я вижу, что вы используете / opt / rh / httpd24 / root / var / www вместо / var / www, потому что вы хотите использовать httpd24-http. Кстати, есть разница в том, как SELinux обрабатывает / opt / rh / httpd24 / root / var / www и / var / www. Попробуйте «setenforce 0», чтобы проверить, не является ли это проблемой SELinux. Используйте "setenforce 1" для возврата к принудительному исполнению.
Конфигурация php70 находится здесь: / etc / opt / rh / rh-php70