Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


lpi2:apache-php

Apache httpd mit PHP

php-cgi

Pakete Debian 8: apache2 php5-cgi

a2enmod cgi
a2enconf serve-cgi-bin

1)

a2enmod actions
/etc/apache/conf-available/simple-php5-cgi.conf
<Directory /usr/lib/cgi-bin>
  Action php-script /cgi-bin/php5
  AddHandler   php-script .php
</Directory>
a2enconf simple-php5-cgi
/usr/lib/cgi-bin/phpinfo.php
<?php
# do not use me in production
  phpinfo();
  #phpinfo(INFO_MODULES);
?>

mod_php

Pakete:

  • Debian (8): libapache2-mod-php5
  • CentOS (7): php
/var/www/html/phpinfo.php
<?php
# do not use me in production
  phpinfo();
  #phpinfo(INFO_MODULES);
?>

php-fcgi

Pakete Debian 8: apache2 php5-cgi libapache2-mod-fcgid

a2dismod cgi
a2disconf serve-cgi-bin
a2enmod fcgid
/etc/apache2/conf-available/php-fcgi.conf
# Context - server config
FcgidMaxProcesses 150
# Otherwise php output shall be buffered
FcgidOutputBufferSize 0
 
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
  AddHandler fcgid-script .php # may confict with other .php handlers
  #FcgidWrapper /usr/local/bin/php-fcgid-wrapper
  FcgidWrapper /usr/bin/php-cgi
  AllowOverride None
  Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  Require all granted
</Directory>
a2enconf php-fcgi
apachectl configtest
apachectl graceful
/usr/lib/cgi-bin/phpinfo.php
<?php
# do not use me in production
  phpinfo();
  #phpinfo(INFO_MODULES);
?>
wget -nv -O - http://localhost/cgi-bin/phpinfo.php
service apache2 status

php-fpm

Pakete Debian 8: apache2 php5-fpm

a2dismod cgi
a2disconf serve-cgi-bin
a2enmod proxy_fcgi
/etc/apache2/conf-available/php-fpm.conf
<Proxy "unix:/var/run/php5-fpm.sock|fcgi://php-fpm">
  # we must declare a (any) parameter in here 
  # or it won't register the proxy ahead of time
  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>
a2enconf php-fpm
apachectl configtest
apachectl graceful
/usr/lib/cgi-bin/phpinfo.php
<?php
# do not use me in production
  phpinfo();
  #phpinfo(INFO_MODULES);
?>
wget -nv -O - http://localhost/cgi-bin/phpinfo.php
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
/etc/php5/fpm/pool.d/phpinfo-app.conf
[phpinfo-app]
…
user = phpinfo
group = phpinfo
…
listen = /var/run/php5-fpm-phpinfo.sock
…
service php5-fpm restart
/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>
a2enconf php-fpm-phpinfo
apachectl configtest
apachectl graceful
/srv/phpinfo/phpinfo.php
<?php
# do not use me in production
  phpinfo();
  phpinfo(INFO_MODULES);
?>
wget -nv -O - http://localhost/phpinfo/phpinfo.php
service apache2 status
1)
Das würde mit den folgenden Ergänzungen schon reichen. Wird aber von php nicht empfohlen.
/tmp/cgi.force_redirect_no.ini
# do not use this in production, see
# http://php.net/manual/de/ini.core.php#ini.cgi.force-redirect
cgi.force_redirect = 0
/usr/lib/cgi-bin/phpinfo.php
#!/bin/sh
# just because something works doesn't mean it's a good idea ...
exec /usr/bin/php-cgi -c /tmp/cgi.force_redirect_no.ini
<?php
# do not use me in production
  phpinfo();
  #phpinfo(INFO_MODULES);
?>
lpi2/apache-php.txt · Zuletzt geändert: 2018/11/12 23:23 (Externe Bearbeitung)