web-dev-qa-db-ja.com

SCLが「ファイルが見つかりません」というエラーで機能しないため、httpd24、php56、php70をインストールします。

レミブログでそれらのリポジトリに関連する質問以来、私は thisthis および this を読んだと言ってみましょう。ブログエントリはまったく役に立たないか、ここで何か不足していますが、何が何かわかりません。以下に、どのステップを実行したかを明らかにし、私が間違っていることを見てみましょう。 PHP 5.6.xとPHP 7.0をSCLとしてインストールする予定です(両方でいくつかのアプリケーションをテストする必要があり、PHP 5.6を保持する必要があるため)。いくつかのWordpress開発によるxのサポート)とSetHandlerを介してApache 2.4.xを使用するため、以下の手順に従います。

  1. Software Collectionsツールをインストールします。

    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. Repoパッケージをインストールします。

    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 
    

そして、成功しました。RedHat/ CentOSのApacheデフォルトページが表示されます。これまでのところすべて良い。次のコードを使用して、/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に変更して、私が同じissueを見つけたすべての場所で同じ変更、Apacheを再起動して再試行しましたが、同じエラーが発生しました。 /var/www/htmlの権限を確認したところ、次のようになりました。

# ls -l /var/www/
drwxrwsr-x 3 Apache root 4096 Nov 13 04:51 html

ここで何が恋しいの?私は何を間違っていますか?これについていくつかのアイデアや助けを私に与えることはできますか?

2
ReynierPM

私は同じ手順をテストしました、それは私のために機能します:(

/ 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

次に、vhost管理用に2つの名前(el6php56およびel6php70)を作成し、Apache構成ファイルを追加して、各vhostの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を使用します)

6
Remi Collet

私はたまたまこれに遭遇しました。 httpd24-httpを使用したいので、/ var/wwwの代わりに/ opt/rh/httpd24/root/var/wwwを使用しているようです。 Afaikは、SELinuxが/ opt/rh/httpd24/root/var/wwwと/ var/wwwをどのように扱うかで違いがあります。 「setenforce 0」を試して、SELinuxの問題かどうかを確認します。強制を元に戻すには、「setenforce 1」を使用します。

Php70の設定は次のとおりです:/ etc/opt/rh/rh-php70

0
user486227