Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
fortgeschrittene:apache-php [2016/12/19 00:47] ingo_wichmann angelegt |
fortgeschrittene:apache-php [2018/11/12 23:23] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Apache httpd mit PHP ====== | ====== Apache httpd mit PHP ====== | ||
===== php-cgi ===== | ===== php-cgi ===== | ||
- | //nicht empfohlen// | ||
Pakete Debian 8: ''apache2 php5-cgi'' | Pakete Debian 8: ''apache2 php5-cgi'' | ||
Zeile 8: | Zeile 7: | ||
a2enconf serve-cgi-bin | a2enconf serve-cgi-bin | ||
- | <file ini /tmp/insecure.ini> | + | (( Das würde mit den folgenden Ergänzungen schon reichen. Wird aber von php nicht empfohlen. |
+ | <file ini /tmp/cgi.force_redirect_no.ini> | ||
# do not use this in production, see | # do not use this in production, see | ||
# http://php.net/manual/de/ini.core.php#ini.cgi.force-redirect | # http://php.net/manual/de/ini.core.php#ini.cgi.force-redirect | ||
Zeile 17: | Zeile 17: | ||
#!/bin/sh | #!/bin/sh | ||
# just because something works doesn't mean it's a good idea ... | # just because something works doesn't mean it's a good idea ... | ||
- | exec /usr/bin/php-cgi -c /tmp/insecure.ini | + | exec /usr/bin/php-cgi -c /tmp/cgi.force_redirect_no.ini |
+ | <?php | ||
+ | # do not use me in production | ||
+ | phpinfo(); | ||
+ | #phpinfo(INFO_MODULES); | ||
+ | ?> | ||
+ | </code> | ||
+ | )) | ||
+ | a2enmod actions | ||
+ | |||
+ | <file txt /etc/apache/conf-available/simple-php5-cgi.conf> | ||
+ | <Directory /usr/lib/cgi-bin> | ||
+ | Action php-script /cgi-bin/php5 | ||
+ | AddHandler php-script .php | ||
+ | </Directory> | ||
+ | </file> | ||
+ | |||
+ | a2enconf simple-php5-cgi | ||
+ | |||
+ | <code php /usr/lib/cgi-bin/phpinfo.php> | ||
+ | <?php | ||
+ | # do not use me in production | ||
+ | phpinfo(); | ||
+ | #phpinfo(INFO_MODULES); | ||
+ | ?> | ||
+ | </code> | ||
+ | |||
+ | ===== mod_php ===== | ||
+ | Pakete: | ||
+ | * Debian (8): libapache2-mod-php5 | ||
+ | * CentOS (7): php | ||
+ | |||
+ | <code php /var/www/html/phpinfo.php> | ||
<?php | <?php | ||
# do not use me in production | # do not use me in production | ||
Zeile 25: | Zeile 57: | ||
</code> | </code> | ||
- | ===== php-fcgi minimal ===== | + | ===== php-fcgi ===== |
Pakete Debian 8: ''apache2 php5-cgi libapache2-mod-fcgid'' | Pakete Debian 8: ''apache2 php5-cgi libapache2-mod-fcgid'' | ||
Zeile 58: | Zeile 90: | ||
# do not use me in production | # do not use me in production | ||
phpinfo(); | phpinfo(); | ||
- | phpinfo(INFO_MODULES); | + | #phpinfo(INFO_MODULES); |
?> | ?> | ||
</code> | </code> | ||
Zeile 66: | Zeile 98: | ||
service apache2 status | service apache2 status | ||
- | ===== php-fcgi mit vhost und suexec ===== | + | ===== php-fpm ===== |
- | //TODO: noch nicht fertig// | + | Pakete Debian 8: ''apache2 php5-fpm'' |
- | Voraussetzung: apache mit vhost | + | |
- | apt-get install apache2-suexec php5-cgi libapache2-mod-fcgid | + | a2dismod cgi |
- | a2enmod fcgid | + | a2disconf serve-cgi-bin |
- | a2enmod suexec | + | a2enmod proxy_fcgi |
- | <file txt /etc/apache2/conf-available/php-fcgi.conf> | + | <file txt /etc/apache2/conf-available/php-fpm.conf> |
- | # Context - server config | + | <Proxy "unix:/var/run/php5-fpm.sock|fcgi://php-fpm"> |
- | FcgidMaxProcesses 150 | + | # we must declare a (any) parameter in here |
- | # Otherwise php output shall be buffered | + | # or it won't register the proxy ahead of time |
- | FcgidOutputBufferSize 0 | + | ProxySet disablereuse=off |
+ | </Proxy> | ||
+ | ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ | ||
+ | <Directory "/usr/lib/cgi-bin"> | ||
+ | <FilesMatch ".+\.php$"> | ||
+ | SetHandler proxy:fcgi://php-fpm | ||
+ | </FilesMatch> | ||
+ | AllowOverride None | ||
+ | Require all granted | ||
+ | </Directory> | ||
</file> | </file> | ||
- | a2enconf php-fcgi | + | a2enconf php-fpm |
- | mkdir -p /srv/phpinfo.linuxhotel.de/cgi-bin | + | apachectl configtest |
- | useradd -r -d /srv/phpinfo.linuxhotel.de/cgi-bin/ -s /bin/false phpinfo | + | apachectl graceful |
- | (( ''php-cgi'' needs to be under suexec doc_root, see | + | <code php /usr/lib/cgi-bin/phpinfo.php> |
- | /usr/lib/apache2/suexec-pristine -V | + | <?php |
- | )) | + | # do not use me in production |
- | <code bash /var/www/php-cgi> | + | phpinfo(); |
- | #!/bin/sh | + | #phpinfo(INFO_MODULES); |
- | export PHPRC="/etc/php5/cgi" | + | ?> |
- | exec /usr/bin/php-cgi | + | |
</code> | </code> | ||
- | chmod +x /var/www/php-cgi | ||
- | <file txt | + | wget -nv -O - http://localhost/cgi-bin/phpinfo.php |
- | <code php /srv/phpinfo.linuxhotel.de/cgi-bin/phpinfo.fcgi> | + | service apache2 status |
+ | |||
+ | ===== php-fpm mit anderem Benutzer ===== | ||
+ | Pakete Debian 8: ''apache2 php5-fpm'' | ||
+ | |||
+ | a2dismod cgi | ||
+ | a2disconf serve-cgi-bin | ||
+ | a2enmod proxy_fcgi | ||
+ | |||
+ | useradd -r -s /usr/sbin/nologin -d /srv/phpinfo phpinfo | ||
+ | mkdir /srv/phpinfo | ||
+ | cp /etc/php5/fpm/pool.d/{www,phpinfo-app}.conf | ||
+ | |||
+ | <file txt /etc/php5/fpm/pool.d/phpinfo-app.conf> | ||
+ | [phpinfo-app] | ||
+ | … | ||
+ | user = phpinfo | ||
+ | group = phpinfo | ||
+ | … | ||
+ | listen = /var/run/php5-fpm-phpinfo.sock | ||
+ | … | ||
+ | </file> | ||
+ | |||
+ | service php5-fpm restart | ||
+ | |||
+ | <file txt /etc/apache2/conf-available/php-fpm-phpinfo.conf> | ||
+ | <Proxy "unix:/var/run/php5-fpm-phpinfo.sock|fcgi://php-fpm-phpinfo"> | ||
+ | # we must declare a (any) parameter in here | ||
+ | # or it won't register the proxy ahead of time | ||
+ | ProxySet disablereuse=off | ||
+ | </Proxy> | ||
+ | ScriptAlias /phpinfo/ /srv/phpinfo/ | ||
+ | <Directory "/srv/phpinfo/"> | ||
+ | <FilesMatch ".+\.php$"> | ||
+ | SetHandler proxy:fcgi://php-fpm-phpinfo | ||
+ | </FilesMatch> | ||
+ | AllowOverride None | ||
+ | Require all granted | ||
+ | </Directory> | ||
+ | </file> | ||
+ | |||
+ | a2enconf php-fpm-phpinfo | ||
+ | |||
+ | apachectl configtest | ||
+ | apachectl graceful | ||
+ | |||
+ | <code php /srv/phpinfo/phpinfo.php> | ||
<?php | <?php | ||
# do not use me in production | # do not use me in production | ||
- | phpinfo(); | + | phpinfo(); |
+ | phpinfo(INFO_MODULES); | ||
?> | ?> | ||
</code> | </code> | ||
- | ## chmod +x /srv/phpinfo.linuxhotel.de/cgi-bin/phpinfo.fcgi | + | |
+ | wget -nv -O - http://localhost/phpinfo/phpinfo.php | ||
+ | |||
+ | service apache2 status | ||