PHP Anwendungen¶
Es wird eine Konfiguration eingerichtet, über welche es möglich ist PHP Anwendungen zu betreiben. Eine kleines HelloWorld Beispiel wird ebenfalls mit installiert.
Installation¶
$ ${SCRIPT_FOLDER}/apache_setup.sh installPHP
Mit dem Kommando installPHP
werden die folgenden Schritte ausgeführt.
Es werden die erforderlichen Pakete für PHP (php, libapache2-mod-php) und PHP-sqlite (php-sqlite3) installiert.
Es wird der Ordner
/var/www/phpApps
eingerichtet, in dem PHP Anwendungen abgelegt werden können (php-apps.conf).
$ apt-get install php php-sqlite libapache2-mod-php
$ sudo -H mkdir /var/www/phpApps
$ sudo -H a2ensite php-apps
$ sudo -H service apache2 reload
Es wird eine Test-Seite ( https://localhost/hello.php ) eingrichtet (PHP-Test Anwendung).
$ sudo -H ap2ensite hello_php
$ sudo -H service apache2 reload
De-Installation¶
$ ${SCRIPT_FOLDER}/apache_setup.sh deinstallPHP
Anmerkungen¶
Mit dem Paket libapache2-mod-php wird das php
Modul installiert,
siehe dazu auch: PHP Debian GNU/Linux-Installationshinweise. Zu der Installation
gehören die INI-Dateien:
/etc/php/7.0
├── apache2
│ ├── conf.d
...............
│ │ └── 20-sqlite3.ini -> ../../mods-available/sqlite3.ini
│ └── php.ini
├── cli
│ ├── conf.d
...............
│ │ └── 20-sqlite3.ini -> ../../mods-available/sqlite3.ini
│ └── php.ini
└── mods-available
...........
└── sqlite3.ini
In der Datei /etc/php/7.0/apache2/php.ini
kann die PHP Laufzeitumgebung der
Apache Prozesse eingestellt werden (PHP Laufzeiteinstellungen).
In der Datei /etc/apache2/mods-available/php7.0.conf
ist die default
Konfiguration des PHP-Moduls zu finden:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch ".+\.phps$">
SetHandler application/x-httpd-php-source
# Deny access to raw php sources by default
# To re-enable it's recommended to enable access to the files
# only in specific virtual host or directory
Require all denied
</FilesMatch>
# Deny access to files without filename (e.g. '.php')
<FilesMatch "^\.ph(p[345]?|t|tml|ps)$">
Require all denied
</FilesMatch>
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_flag engine Off
</Directory>
</IfModule>
php-apps.conf¶
Die folgende php-apps.conf
Site, richtet eine Umgebung ein, in der
PHP-Anwendungen betrieben werden können.
<IfModule mod_php7.c>
<Directory /var/www/phpApps/>
...
php_value open_basedir /var/www/phpApps/
...
</Directory>
</IfModule>
Mit php_value
können die INI-Werte gesetzt werden, z.B. das open_basedir. Eine Auflistung
aller Optionen findet sich in der Liste der php.ini-Direktiven.
PHP-Test Anwendung¶
Die Test-Site sollte nur in einer Entwickler-Umgebung installiert werden. Sie
besteht aus nur einer Datei /var/www/phpApps/helloWorld/index.php
.
<?php phpinfo(); ?>
Das hello.php
Skript sollte in keinem Fall im Internet aktiviert werden, da
es mit dem darin enthaltenen phpinfo()
zu viel über den Server verrät und
einem potentiellen Angreifer evtl. schon erste Hinweise für ein geeignetes
Angriffszenario gibt.
Die Installation erfolgte in den /var/www/phpApps
Ordner. Für den bereits
oben in der php-apps.conf die allgemeinen PHP Direktiven gesetzt
wurden. Die hello_php
Site definiert nur noch den Alias, damit die Site
unter der URL https://localhost/hello.php angeboten wird.
<IfModule mod_php7.c>
Alias /hello.php /var/www/phpApps/helloWorld/index.php
</IfModule>