Php

安裝 httpd24、php56 和 php70,因為 SCL 無法使用錯誤“找不到文件”

  • September 4, 2018

讓我們開始說我已經在 Remi 部落格上閱讀了 thisthisthis,因為它與這些儲存庫相關的問題。部落格條目根本沒有幫助我,或者我在這裡遺漏了一些東西,但我不確定是什麼。我將在下面公開我遵循了哪些步驟,讓我們看看我做錯了什麼。我計劃將 PHP 5.6.x 和 PHP 7.0 安裝為 SCL(因為我需要在兩者上測試一些應用程序,並且由於一些 Wordpress 開發,我需要保持 PHP 5.6.x 支持),我將通過 SetHandler 使用 Apache 2.4.x所以以下是步驟:

  1. 安裝軟體集合工具:
yum install scl-utils
  1. 為您的系統下載包含儲存庫的軟體包(在本例中為 httpd24)
wget http://www.softwarecollections.org/en/scls/rhscl/httpd24/epel-6-x86_64/download/rhscl-httpd24-epel-6-x86_64.noarch.rpm
  1. 安裝 repo 包:
yum install rhscl-httpd24-epel-6-x86_64.noarch.rpm
  1. 安裝集合:
yum install httpd24
  1. 開始使用軟體合集:
scl enable httpd24 bash
  1. 啟動 httpd24 服務(預設選項)
service httpd24-httpd start
  1. 將 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
  1. 啟動 PHP56-FPM:
service php56-php-fpm start
  1. 將 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
  1. 測試 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我在發現相同問題的所有地方都進行了相同的更改,我重新啟動了 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)

引用自:https://serverfault.com/questions/736299