@@ -11,8 +11,8 @@ front controllers live. For more details, see the :ref:`the-web-directory`.
11
11
The web directory services as the document root when configuring your web
12
12
server. In the examples below, this directory is in ``/var/www/project/web/ ``.
13
13
14
- Apache2
15
- -------
14
+ Apache2 with mod_php/PHP-CGI
15
+ ----------------------------
16
16
17
17
For advanced Apache configuration options, see the official `Apache `_
18
18
documentation. The minimum basics to get your application running under Apache2
@@ -63,6 +63,107 @@ following configuration snippet:
63
63
Require all granted
64
64
</Directory>
65
65
66
+ Apache2 with PHP-FPM
67
+ --------------------
68
+
69
+ To make use of PHP5-FPM with Apache, you first have to ensure that you have
70
+ the FastCGI process manager ``php-fpm `` binary and Apache's FastCGI module
71
+ installed (for example, on a Debian based system you have to install the
72
+ ``libapache2-mod-fastcgi `` and ``php5-fpm `` packages).
73
+
74
+ PHP-FPM uses so called *pools * to handle incoming FastCGI requests. You can
75
+ configure an arbitrary number of pools in the FPM configuration. In a pool
76
+ you configure either a TCP socket (IP and port) or a unix domain socket to
77
+ listen on. Each pool can also be run under a different UID and GID:
78
+
79
+ .. code-block :: ini
80
+
81
+ ; a pool called www
82
+ [www]
83
+ user = www-data
84
+ group = www-data
85
+
86
+ ; use a unix domain socket
87
+ listen = /var/run/php5-fpm.sock
88
+
89
+ ; or listen on a TCP socket
90
+ listen = 127.0.0.1:9000
91
+
92
+ Using mod_proxy_fcgi with Apache 2.4
93
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
94
+
95
+ If you are running Apache 2.4, you can easily use ``mod_proxy_fcgi `` to pass
96
+ incoming requests to PHP-FPM. Configure PHP-FPM to listen on a TCP socket
97
+ (``mod_proxy `` currently `does not support unix sockets `_), enable ``mod_proxy ``
98
+ and ``mod_proxy_fcgi `` in your Apache configuration and use the ``ProxyPassMatch ``
99
+ directive to pass requests for PHP files to PHP FPM:
100
+
101
+ .. code-block :: apache
102
+
103
+ <VirtualHost *:80>
104
+ ServerName domain.tld
105
+ ServerAlias www.domain.tld
106
+
107
+ ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/web/$1
108
+
109
+ DocumentRoot /var/www/project/web
110
+ <Directory /var/www/project/web>
111
+ # enable the .htaccess rewrites
112
+ AllowOverride All
113
+ Require all granted
114
+ </Directory>
115
+
116
+ ErrorLog /var/log/apache2/project_error.log
117
+ CustomLog /var/log/apache2/project_access.log combined
118
+ </VirtualHost>
119
+
120
+ .. caution ::
121
+
122
+ When you run your Symfony application on a subpath of your document root,
123
+ the regular expression used in ``ProxyPassMatch `` directive must be changed
124
+ accordingly:
125
+
126
+ .. code-block :: apache
127
+
128
+ ProxyPassMatch ^/path-to-app/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/project/web/$1
129
+
130
+ PHP-FPM with Apache 2.2
131
+ ~~~~~~~~~~~~~~~~~~~~~~~
132
+
133
+ On Apache 2.2 or lower, you cannot use ``mod_proxy_fcgi ``. You have to use
134
+ the `FastCgiExternalServer `_ directive instead. Therefore, your Apache configuration
135
+ should look something like this:
136
+
137
+ .. code-block :: apache
138
+
139
+ <VirtualHost *:80>
140
+ ServerName domain.tld
141
+ ServerAlias www.domain.tld
142
+
143
+ AddHandler php5-fcgi .php
144
+ Action php5-fcgi /php5-fcgi
145
+ Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
146
+ FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -pass-header Authorization
147
+
148
+ DocumentRoot /var/www/project/web
149
+ <Directory /var/www/project/web>
150
+ # enable the .htaccess rewrites
151
+ AllowOverride All
152
+ Order allow,deny
153
+ Allow from all
154
+ </Directory>
155
+
156
+ ErrorLog /var/log/apache2/project_error.log
157
+ CustomLog /var/log/apache2/project_access.log combined
158
+ </VirtualHost>
159
+
160
+ If you prefer to use a unix socket, you have to use the ``-socket `` option
161
+ instead:
162
+
163
+ .. code-block :: apache
164
+
165
+ FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization
166
+
66
167
Nginx
67
168
-----
68
169
110
211
be sure to include them in the ``location `` block above.
111
212
112
213
.. _`Apache` : http://httpd.apache.org/docs/current/mod/core.html#documentroot
214
+ .. _`does not support unix sockets` : https://issues.apache.org/bugzilla/show_bug.cgi?id=54101
215
+ .. _`FastCgiExternalServer` : http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer
113
216
.. _`Nginx` : http://wiki.nginx.org/Symfony
0 commit comments