GVKun编程网logo

Apache2 + PHP-FPM 配置要点(apache2.4 php 配置)

20

在本文中,您将会了解到关于Apache2+PHP-FPM配置要点的新资讯,同时我们还将为您解释apache2.4php配置的相关在本文中,我们将带你探索Apache2+PHP-FPM配置要点的奥秘,分

在本文中,您将会了解到关于Apache2 + PHP-FPM 配置要点的新资讯,同时我们还将为您解释apache2.4 php 配置的相关在本文中,我们将带你探索Apache2 + PHP-FPM 配置要点的奥秘,分析apache2.4 php 配置的特点,并给出一些关于Apache 2.4 + PHP-FPM和授权标头、Apache 2.4 PHP-FPM,捕获错误页面、apache 与 php-fpm 几种处理方式、apache2 – 升级php和apache后如何解决phpmyadmin未发现的问题?的实用技巧。

本文目录一览:

Apache2 + PHP-FPM 配置要点(apache2.4 php 配置)

Apache2 + PHP-FPM 配置要点(apache2.4 php 配置)

<VirtualHost *:80>
    ServerName my.domain.com
    ServerAdmin admin@domain.com
    DocumentRoot /var/www/my.domain.com
    RewriteEngine On
    <IfModule mod_fastcgi.c>
        #ScriptAlias /php/ "/usr/bin/"
        ScriptAlias /php/ "/usr/sbin/"
        #FastCgiExternalServer /app/php/php-cgi -socket /var/run/php5-fpm.sock
        FastCgiExternalServer /usr/sbin/php5-fpm -socket /var/run/php5-fpm.sock
        #<Directory "/usr/bin/">
        #   SetHandler fastcgi-script 
        #   Options FollowSymLinks
        #   Order allow,deny
        #   Allow from all
        #</Directory>
        #AddType application/x-httpd-php .php
        AddHandler php-fastcgi .php
        #Action php-fastcgi /php/php-cgi
        Action php-fastcgi /php/php5-fpm
    </IfModule>
    <Directory /app/www/owncloud>
        AllowOverride ALL
    </Directory>
    <IfModule dir_module>
        DirectoryIndex index.html
    </IfModule>
    AllowEncodedSlashes On
    ErrorLog  /var/log/apache2/error.log
    CustomLog /var/log/apache2/access.log combined
    ServerSignature Off
</VirtualHost>

注释过的地方,是我走过的一些弯路。



Apache 2.4 + PHP-FPM和授权标头

Apache 2.4 + PHP-FPM和授权标头

简介: Apache 2.4的mod_proxy似乎没有将授权标头传递给PHP-FPM。 有没有什么办法解决这一问题?

长版本:我正在运行Apache 2.4和PHP-FPM的服务器。 我正在使用APC进行操作码caching和用户caching。 按照互联网的build议,我使用Apache 2.4的mod_proxy_fcgi来将请求代理到FPM,如下所示:

ProxyPassMatch ^/(.*.PHP)$ fcgi://127.0.0.1:9000/foo/bar/$1

设置工作正常,除了一件事:APC的捆绑apc.PHP,用于监视APC的状态不允许我login(需要查看用户caching条目)。 当我单击“用户caching条目”来查看用户caching时,它会要求我login,单击loginbutton将显示通常的HTTPlogin表单,但是input正确的login名和密码不会成功。 当使用mod_PHP而不是mod_proxy + PHP-fpm运行时,这个函数是完美的。

经过一些Googlesearch之后,我发现其他人也遇到同样的问题,并发现这是因为Apache没有将授权HTTP头传递给外部FastCgi进程。 不幸的是,我只find了mod_fastcgi的修复,看起来像这样:

htaccess为URL添加.html扩展名,带或不带尾部斜线

在apache tomact服务器启动时通过电子邮件发送错误和exception

带有基本authentication的Apache反向代理

在.htaccess中的数字库转换

用文件夹中的file_put_contents保存文件

FastCgiExternalServer /usr/lib/cgi-bin/PHP5-fcgi -host 127.0.0.1:9000 -pass-header Authorization

是否有一个等效的设置或一些解决方法,这也可以使用mod_proxy_fcgi?

将ImageMagick安装到Xampp / Windows 7上

GitLab 7.2.1与Apache服务器而不是Nginx

禁用热链接或直接下载我的video,只有当我的网站页面显示video时,才能stream式传输video

上传大文件后Commons FTPClient挂起

从bash启动apachectl

通常出于“安全原因”,各种Apache模块将剥离Authorization标头。 他们都有不同的模糊的设置,你可以调整,以推翻这种行为,但你需要确定究竟哪个模块是责备。

您可以通过env将标题直接传递给PHP来解决这个问题:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

另请参见Zend server Windows – 授权标头不传递给PHP脚本

这花了我很长时间来破解,因为它没有在mod_proxy或mod_proxy_fcgi下记录。

将以下指令添加到您的apache conf或.htaccess中:

CGIPassAuth on

详情请看这里 。

我没有找到mod_proxy_fcgi的任何类似的设置,但它只是默认为我工作。 它要求用户授权(.htaccess像往常一样)和PHP得到它,并像mod_PHP或fastcgi和通过标题。 我不知道我是否有帮助…

编辑:它只适用于teszt.com/当使用DirectoryIndex …如果我传递的PHP文件的名称(即使index.PHP!)它只是不工作,不要通过身份验证到PHP。 这对我来说是一个阻碍,但我不想降级到apache 2.2(和mod_fastgi),所以我迁移到Nginx(也在这台机器上)。

总结

以上是小编为你收集整理的Apache 2.4 + PHP-FPM和授权标头全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Apache 2.4 PHP-FPM,捕获错误页面

Apache 2.4 PHP-FPM,捕获错误页面

这是我的vhost文件:

 <VirtualHost *:80>
   ServerName awesome.dev

   ## Vhost docroot
   DocumentRoot "/var/www/awesome"

   ## Directories, there should at least be a declaration for /var/www/awesome
   <Directory "/var/www/awesome">
     Options Indexes FollowSymLinks MultiViews
     DirectoryIndex index.PHP
     AllowOverride All
     Require all granted
   </Directory>

   ## Logging
   ErrorLog "/var/log/apache2/w0JhArMoDehc_error.log"
   ServerSignature Off
   CustomLog "/var/log/apache2/w0JhArMoDehc_access.log" combined

   ## Server aliases
   ServerAlias www.awesome.dev

   ## SetEnv/SetEnvIf for environment variables
   SetEnv APP_ENV dev

   ProxyPassMatch ^/(.*\.PHP(/.*)?)$fcgi://127.0.0.1:9000/var/www/awesome/$1
 </VirtualHost>

我正在尝试捕获对不存在的* .PHP文件的所有请求.

例如,如果/var/www/awesome/index.PHP存在并且我转到http://foo.com/index.php我得到了正确的响应,但是如果/var/www/awesome/foo.PHP不存在并且我转到http://foo.com/foo.php,我只是得到文件未找到的响应..

没有读取.htaccess文件,因为Apache将所有内容移交给PHP-FPM.

我需要捕获所有404请求并显示一个常见的错误页面,就像您通常在任何站点上看到的那样.

但是,由于Apache将所有内容都移交给PHP-fpm,它似乎并没有正确处理这些错误.

解决方法:

我曾经有同样的问题,最后我修复了它.

尝试在ProxyPassMatch设置后添加:

ProxyErrorOverride on

顺便说一句,别忘了你的

ErrorDocument 404 /path/to/file

设置.

apache 与 php-fpm 几种处理方式

apache 与 php-fpm 几种处理方式

原文地址: apache 与 php-fpm 几种处理方式

目录

  • 1.SetHandler

  • 2.ProxyPassMatch

  • 3.ProxyPass

<h3 id="1">1.SetHandler</h3>

  1. 在apache配置文件只部署一次
  2. 需要Apache 2.4.9以上才行
ip:port配置

php-fpm配置

listen = 127.0.0.1:9000

httpd配置

<FilesMatch \.php$>
setHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
UDS配置

php-fpm配置

listen = /var/run/php-fpm/php-fpm.sock

httpd配置

<FilesMatch \.php$>
    SetHandler:unix:///var/run/php-fpm/php-fpm.sock|fcgi://php-fpm
    SetHandler "proxy:unix:/var/run/php-fpm/php-fpm.sock|fcgi://localhost" # Apache 2.4.10设置
</FilesMatch>

<h3 id="2">2.ProxyPassMatch</h3>

需要在每个 "VirtualHost" 里面加入

ip:port配置
<VirtualHost *:80>
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/path/to/your/documentroot/$1
DirectoryIndex /index.php
</VirtualHost>
  • ProxyPassMatch
    只有满足特定正则模式的内容才会匹配并执行此规则,这里的模式是,
    ^/(..php(/.)?)$

从网站(虚拟主机 <VirtualHost > 的根目录开始,匹配任何以 .php 结尾,或者在 .php 之后紧跟一个 / 再跟别的内容的路径。

  • ^ (caret) 和 $ (dollar)

标志要匹配的路径的开始和结束

  • ( )

括号里的内容可以用 $1 来表示,以方便后面引用它。

  • fcgi://127.0.0.1:9000

通过 mod_proxy_fcgi 来转发的代理,使用 fastCGI 协议,转到 PHP-FPM 监听的端口。
改变 IP 地址和/或端口号就可以要转到的不同的 pool。用这个可以实现服务器分流、均衡等。

  • /path/to/your/documentroot/

非常重要!必须与虚拟主机的路径匹配,且必须是对应 php 文件在操作系统中的绝对路径。否则会找不到文件(PHP Script File)。这也是 URL 地址重写的目的所在:将 URL 地址转换成 fcgi://127.0.0.1:9000 后面紧跟着的 php 文件绝对路径。

  • 可以从原始请求扩展成整个请求路径的变量,这里指代前面外围 ( ) 里面匹配的那个路径(uri)

我本机docker容器 httpd 和 php-fpm配置
我的php-fpm在138.38.38.110 上,配置将有所不同


<VirtualHost *:80>
    ServerAdmin shenyi@com.cn
    DocumentRoot "/usr/local/apache2/htdocs"
    ServerName localhost
    <Directory "/usr/local/apache2/htdocs">
     Options None
     Require all granted
    </Directory>
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://138.38.38.110:9000/var/www/htm/$1
</VirtualHost>

关于docker-compose 安装配置,看我docker compose 安装配置nginx 反向代理 httpd php-fpm
<h3 id="3">3.ProxyPass</h3>

跟ProxyPassMatch 类似 ,需要在每个 VirtualHost 中分别设置

<LocationMatch ^(.*\.php)$>
ProxyPass fcgi://127.0.0.1:9000/path/to/webroot/
ProxyErrorOverride on
</LocationMatch>

最后感谢 http://cnzhx.net/blog/apache-...

apache2 – 升级php和apache后如何解决phpmyadmin未发现的问题?

apache2 – 升级php和apache后如何解决phpmyadmin未发现的问题?

最近我在我的Ubuntu Desktop 12.04.3 LTS中安装了PHP,Apache,MysqL,PHPMyAdmin,python,将它用作LAMP服务器.我用来安装这些命令的命令如下:

1: sudo passwd
2: su
3: apt-get install PHP5
4: apt-get install apache2
5: apt-get install MysqL-server MysqL-client
6: apt-get install PHPmyadmin
7: apt-get install python
8: apt-get install python-MysqLdb
9: ln -s /etc/PHPmyadmin/apache.conf /etc/apache2/conf.d/PHPmyadmin.conf
10: /etc/init.d/apache2 restart

一切正常. LAMP服务器运行良好.然后我想升级整个LAMP服务器,我的意思是PHP,Apahce,MysqL,PHPMyAdmin等.然后我在谷歌搜索并得到一些ppa,这些软件获得了这些软件的最新版本.然后我加了那些ppa. ppa链接:

1. https://launchpad.net/~tuxpoldo/+archive/PHPmyadmin
2. https://launchpad.net/~ondrej/+archive/mysql-5.6
3. https://launchpad.net/~ondrej/+archive/apache2
4. https://launchpad.net/~ondrej/+archive/PHP5

然后使用这些ppa,首先升级PHPmyadmin然后升级MysqL服务器然后Apache然后PHP.
升级PHPmyadmin和MysqL服务器后,整个LAMP服务器与更新的MysqL服务器和PHPmyadmin运行良好.但是在Apache和PHP升级后,PHPmyadmin没有显示出来.当我尝试:

http://127.0.0.1/PHPmyadmin

它说“找不到”.

我怎么能用PHPmyadmin来解决这个问题?请尽快帮助我.我为此付出了很大的麻烦.

提前致谢.

解决方法:

在/ var / www中创建一个链接,如下所示:

sudo ln -s /usr/share / PHPmyadmin / var / www /

注意:从14.04开始,您可能需要使用/ var / www / html /而不是/ var / www /

如果这不适合你,你需要在apache配置中包含PHPMyAdmin.

使用您喜欢的编辑器打开apache.conf,我的是vim

今天关于Apache2 + PHP-FPM 配置要点apache2.4 php 配置的分享就到这里,希望大家有所收获,若想了解更多关于Apache 2.4 + PHP-FPM和授权标头、Apache 2.4 PHP-FPM,捕获错误页面、apache 与 php-fpm 几种处理方式、apache2 – 升级php和apache后如何解决phpmyadmin未发现的问题?等相关知识,可以在本站进行查询。

本文标签: