Das enthaltene PHP verwenden
Seit der Version 10.0.0 ist PHP standardmäßig in macOS enthalten. Um
PHP mit dem Standard-Webserver zu verwenden, müssen nur ein paar Zeilen
in der Apache Konfigurationsdatei httpd.conf
auskommentiert werden. CGI und/oder CLI
sind standardmäßig aktiviert (zugänglich über das Terminal-Programm).
Die folgende Anleitung, um PHP zu aktivieren, ermöglicht ein einfaches und
schnelles Aufsetzen einer lokalen Entwicklungsumgebung. Es wird
dringend empfohlen, PHP immer auf dem neusten Stand
zu halten. Wie für die meisten Anwendungen werden auch für PHP regelmäßig
neue Versionen erstellt, um Fehler zu beseitigen und um den Funktionsumfang
zu erweitern. Für weitere Informationen sollten Sie die entsprechende
macOS-Installations-Dokumentation lesen. Die folgende Anleitung richtet
sich an Anfänger, um eine Standardkonfiguration aufzusetzen. Alle Benutzer
sollten angespornt sein, neuere Paket-Versionen zu installieren oder selbst zu
kompilieren.
Die normale Installation beinhaltet die Aktivierung des mitgelieferten mod_php
für den Apache-Webserver (Standard-Webserver, der über die Systemeinstellungen
von macOS zugänglich ist) und umfasst folgende Schritte:
-
Öffnen Sie die Apache Konfigurationsdatei. Normalerweise finden Sie diese
unter: /etc/httpd/httpd.conf
Über den
Finder
oder Spotlight
wird
die Datei nur schwer zu finden sein, da sie privat ist und den Rechten des
root
-Benutzers unterliegt.
Hinweis:
Ein Weg, um die Datei zu öffnen, ist, einen Unix-basierten Texteditor
im Terminal, z.B. nano
, zu verwenden. Da die Datei
dem Benutzer root gehört, sollten Sie den sudo
-Befehl
zum Öffnen (mit Root-Rechten) verwenden. Z.B. können Sie Folgendes
im Terminal
-Programm eingeben (danach werden Sie nach
dem Passwort gefragt):
sudo nano /etc/httpd/httpd.conf
Nennenswerte Befehle für nano: ^w
(suchen),
^o
(speichern), und ^x
(schließen)
wobei ^
für die ctrl-Taste steht.
Hinweis:
Versionen von Mac OS X vor 10.5 enthielten ältere Versionen von PHP und
Apache. Daher kann sich die Apache-Konfigurationen auf solchen
älteren Maschinen im folgenden Verzeichnis befinden:
/etc/httpd/httpd.conf.
-
Mit einem Texteditor müssen Sie nur die Zeilen, die ähnlich wie die folgenden
aussehen, einkommentieren (durch entfernen von #; die beiden Zeilen sind
oft ein Stück voneinander getrennt):
# LoadModule php5_module libexec/httpd/libphp4.so
# AddModule mod_php5.c
Beachten Sie die Dateipfade. Wenn Sie zukünftig PHP selbst kompilieren, sollten die
beiden Dateien ersetzt oder wieder auskommentiert werden.
-
Stellen Sie sicher, dass die gewünschten Dateiendungen durch PHP geparst
werden (z.B.: .php .html und .inc)
Durch die bereits in der Datei httpd.conf (ab MacOS Panther),
enthaltenen Angaben, werden Dateien mit der Endung .php
nach dem Aktivieren von PHP automatisch geparst.
<IfModule mod_php4.c>
# Wenn PHP aktiviert wurde, werden .php und .phps Dateien berücksichtigt.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Da die meisten Benutzer index.php verwenden möchten, aktivieren
# wir ebenso automatisch die index.php
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
Hinweis:
Vor Mac OS X 10.5 (Leopard) war PHP 4 statt PHP 5 enthalten, weswegen
die oben genannten Anweisungen angepasst werden müssen (Ersetzen
der "5" durch die "4").
-
Stellen Sie sicher, dass durch DirectoryIndex die gewünschten richtigen
Index-Dateien geladen werden.
Dies kann ebenfalls in httpd.conf definiert werden.
Normalerweise wird index.php und index.html
verwendet. Standardmäßig ist index.php aktiviert, wie oben
bereits gezeigt. Passen Sie es wie gewünscht an.
-
Pfad zur php.ini setzen oder den Standard verwenden
Der Standardpfad unter macOS ist /usr/local/php/php.ini, was durch
einen Aufruf von phpinfo() geprüft werden kann. Wenn keine php.ini
angegeben ist, verwendet PHP die Standardwerte.
Lesen Sie dazu die entsprechenden FAQ:
Wo sollte sich meine php.ini befinden?.
-
Finden oder Setzen des
DocumentRoot
Dies ist das Wurzelverzeichnis für alle Web-Dateien. Dateien in diesem Verzeichnis
werden durch den Webserver ausgeliefert. PHP-Dateien werden geparst, bevor
sie an einen Browser ausgeliefert werden. Der standardmäßig gesetzte Pfad ist
/Library/WebServer/Documents und kann in der httpd.conf
auf einen beliebigen Pfad gesetzt werden. Alternativ ist der standardmäßige Pfad
zum DocumentRoot für die einzelnen Benutzer:
/Users/ihr_benutzername/Sites
-
Erstellen einer phpinfo()-Datei
Die phpinfo()-Funktion zeigt Informationen über PHP an.
Erstellen Sie eine Datei im DocumentRoot mit dem folgenden Inhalt:
-
Starten Sie den Apache neu und laden Sie die eben erzeugte PHP-Datei
Um neu zu starten, können Sie entweder sudo apachectl graceful
im
Terminal aufrufen oder die Stop-/Start-Option des "Personal Web Server" in den
macOS-Systemeinstellungen verwenden. Standardmäßig sollte folgende
URL zum Laden von lokalen Dateien im Webbrowser genügen:
http://localhost/info.php
Alternativ, um Dateien aus dem DocumentRoot eines lokalen Benutzers zu laden:
http://localhost/~IHR_BENUTZER_NAME/info.php
Das CLI (oder CGI in älteren
Versionen) heißt entsprechend php und existiert
wahrscheinlich als /usr/bin/php. Öffnen Sie das Terminal,
lesen Sie das Kapitel PHP auf der
Kommandozeile des PHP-Handbuchs und führen Sie php -v
aus, um die PHP-Version dieses PHP-Binärprogramms zu sehen. Ein Aufruf von
phpinfo() enthält diese Informationen ebenfalls.
Anonymous ¶15 years ago
You only have to uncomment:
#LoadModule php5_module libexec/apache2/libphp5.so
This is gone:
# AddModule mod_php5.c
The statement in 3 was changed to:
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /private/etc/apache2/mime.types
#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
#AddHandler cgi-script .cgi
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml
</IfModule>
Extra MIME types can either be added to the file /private/etc/apache2/mime.types or by using an AddType directive as commented on above.
10086 at xiaoi dot me ¶4 years ago
setup apache + php environment on macOS 10.12.6
step 1: start httpd by apachectl
> sudo apachectl start
step 2: find httpd.conf
> sudo apachectl -t -D DUMP_INCLUDES
step 3: edit conf, eg: /opt/local/etc/apache2/httpd.conf
> sudo vim /opt/local/etc/apache2/httpd.conf
step 4: Load php module before <IfModule unixd_module>, eg:
```
LoadModule php5_module /usr/libexec/apache2/libphp5.so
<IfModule unixd_module>
```
step 5: add mod_php5.c end of httpd.conf
```
<IfModule mod_php5.c>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
```
step 6: save and quit
step 7: restart httpd
> sudo apachectl restart
step 8: write demo.php , test configuration
```
<?php
phpinfo();
?>
```
step 9: copy demo.php to "DocumentRoot", you can find by httpd.conf
step 10: visit demo.php
all done.
Julee ¶11 years ago
To work on Mac OS X Lion 10.7, I had to change /private/etc/php.ini.default to /private/etc/php.ini
parampal ¶9 years ago
instead of step 3, add the following lines to the `/private/etc/apache2/mime.types` file
application/x-httpd-php php
application/x-httpd-php-source phps
cweiske at cweiske dot de ¶9 years ago
On recent (10.8/10.9) macs, the apache php config file is located at /etc/apache2/others/php5.conf
jaffle ¶15 years ago
Additionally, it seems that the default installation of php on Mac OS X (10.5 tested) does not point to the default location of the mysql.sock file that is installed in a standard MySQL 5.0 installation.
This prevents php working with locally hosted MySQL databases.
Adding the following line to the /private/etc/apache2/other/php5.conf file did the trick:
php_value mysql.default_socket /tmp/mysql.sock
(make sure you put it in between the </IfModule> statements)
sachin at dharmapurikar dot in ¶15 years ago
I am using MacOSX 10.5.4 and only enabling the mod_php5 wasn't enough to get the PHP support. I had to add following block before I could use php on machine -
<IfModule mod_php5.c>
# If php is turned on, we respect .php and .phps files.
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
# Since most users will want index.php to work we
# also automatically enable index.php
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>