AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 736299
Accepted
ReynierPM
ReynierPM
Asked: 2015-11-14 17:30:07 +0800 CST2015-11-14 17:30:07 +0800 CST 2015-11-14 17:30:07 +0800 CST

安装 httpd24、php56 和 php70,因为 SCL 无法使用错误“找不到文件”

  • 772

让我们开始说我已经在 Remi 博客上阅读了 this、this和this,因为它与这些存储库相关的问题。博客条目根本没有帮助我,或者我在这里遗漏了一些东西,但我不确定是什么。我将在下面公开我遵循了哪些步骤,让我们看看我做错了什么。我计划将 PHP 5.6.x 和 PHP 7.0 安装为 SCL(因为我需要在两者上测试一些应用程序,并且由于一些 Wordpress 开发,我需要保持 PHP 5.6.x 支持),我将通过 SetHandler 使用 Apache 2.4.x所以以下是步骤:

  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. 安装 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我在发现相同问题的所有地方都进行了相同的更改,我重新启动了 Apache 并再次尝试,但我得到了同样的错误。我已经检查了权限/var/www/html,这就是它们的样子:

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

我在这里想念什么?我做错了什么?任何人都可以给我一些想法或帮助吗?

php
  • 2 2 个回答
  • 16878 Views

2 个回答

  • Voted
  1. Best Answer
    Remi Collet
    2015-11-14T22:23:11+08:002015-11-14T22:23:11+08:00

    我已经测试了相同的步骤,它对我有用:(

    请检查您是否已将所有且仅 /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)

    • http://el6php56/info.php显示 PHP 5.6 的 phpinfo
    • http://el6php70/info.php显示 PHP 7.0 的 phpinfo
    • 6
  2. user486227
    2018-09-05T11:11:56+08:002018-09-05T11:11:56+08:00

    我自己也遇到了这个。我看到您使用的是 /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

    • 0

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve