Установите httpd24, php56 и php70, так как SCL не работает с ошибкой "файл не найден"

Давайте начнем с того, что я прочитал это, это и это в блоге Remi, так как этот вопрос касался этих репозиториев. Записи в блоге не помогают мне вообще, или я что-то здесь упускаю, но я не уверен, что это такое. Ниже я покажу, какие шаги я выполнил, и посмотрим, что я делаю неправильно. Я планирую установить PHP 5.6.x и PHP 7.0 как SCL (потому что мне нужно протестировать некоторые приложения на обоих, и мне нужно поддерживать PHP 5.6.x из-за некоторой разработки Wordpress), и я буду использовать Apache 2.4.x через SetHandler поэтому ниже приведены шаги:

  1. Установите инструменты Коллекции программного обеспечения:

    yum install scl-utils
    
  2. Загрузите пакет с репозиторием для вашей системы (в данном случае для httpd24)

    wget http://www.softwarecollections.org/en/scls/rhscl/httpd24/epel-6-x86_64/download/rhscl-httpd24-epel-6-x86_64.noarch.rpm
    
  3. Установите пакет репо:

    yum install rhscl-httpd24-epel-6-x86_64.noarch.rpm
    
  4. Установить коллекцию:

    yum install httpd24
    
  5. Начните использовать коллекции программного обеспечения:

    scl enable httpd24 bash
    
  6. Запустить службу httpd24 (опция по умолчанию)

    service httpd24-httpd start
    
  7. Установите 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
    
  8. Запустите PHP56-FPM:

    service php56-php-fpm start
    
  9. Установите 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
    
  10. Тестовый 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

что я здесь скучаю? Что я делаю не так? Кто-нибудь может дать мне несколько идей или помочь в этом?

2 ответа

Решение

У меня есть те же шаги, у меня работает:(

Пожалуйста, убедитесь, что вы изменили все и только /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>

Затем (по умолчанию / первый vhost будет использовать php 5.6)

Я просто столкнулся с этим сам. Я вижу, что вы используете /opt/rh/httpd24/root/var/www вместо / var / www, потому что вы хотите использовать httpd24-http. Afaik есть разница в том, как SELinux обрабатывает /opt/rh/httpd24/root/var/www и /var/www. Попробуйте 'setenforce 0', чтобы проверить, является ли это проблемой SELinux. Используйте 'setenforce 1', чтобы вернуть принудительное исполнение.

Конфигурация php70 находится здесь: /etc/opt/rh/rh-php70

Другие вопросы по тегам