Using the bundled PHP
PHP has come standard with Macs since OS X version 10.0.0. Enabling PHP
with the default web server requires uncommenting a few lines in the
Apache configuration file httpd.conf whereas the
CGI and/or CLI are enabled by
default (easily accessible via the Terminal program).
Enabling PHP using the instructions below is meant for quickly setting up
a local development environment. It's highly recommended
to always upgrade PHP to the newest version. Like most live software,
newer versions are created to fix bugs and add features and PHP being is
no different. See the appropriate MAC OS X installation documentation for
further details. The following instructions are geared towards a beginner
with details provided for getting a default setup to work. All users are
encouraged to compile, or install a new packaged version.
The standard installation type is using mod_php, and enabling the bundled
mod_php on Mac OS X for the Apache web server (the default web server,
that is accessible via System Preferences) involves the following steps:
-
Locate and open the Apache configuration file. By default, the location
is as follows: /private/etc/apache2/httpd.conf
Using Finder or Spotlight to find
this file may prove difficult as by default it's private and owned by
the root user.
Note:
One way to open this is by using a Unix based text editor in the
Terminal, for example nano, and because the
file is owned by root we'll use the sudo command
to open it (as root) so for example type the following into the
Terminal Application (after, it will prompt for
a password):
sudo nano /private/etc/apache2/httpd.conf
Noteworthy nano commands: ^w (search),
^o (save), and ^x (exit) where
^ represents the Ctrl key.
Note:
Versions of Mac OS X prior to 10.5 were bundled with older versions of
PHP and Apache. As such, the Apache configuration file on legacy
machines may be /etc/httpd/httpd.conf.
-
With a text editor, uncomment the lines (by removing the #) that look
similar to the following (these two lines are often not together,
locate them both in the file):
# LoadModule php5_module libexec/httpd/libphp5.so
# AddModule mod_php5.c
Notice the location/path. When building PHP in the future, the above
files should be replaced or commented out.
-
Be sure the desired extensions will parse as PHP (examples: .php .html
and .inc)
Due to the following statement already existing in
httpd.conf (as of Mac Panther), once PHP is
enabled the .php files will automatically
parse as PHP.
<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>
Note:
Before OS X 10.5 (Leopard), PHP 4 was bundled instead of PHP 5 in
which case the above instructions will differ slightly by changing
5's to 4's.
-
Be sure the DirectoryIndex loads the desired default index file
This is also set in httpd.conf. Typically
index.php and index.html are
used. By default index.php is enabled because
it's also in the PHP check shown above. Adjust accordingly.
-
Set the php.ini location or use the default
A typical default location on Mac OS X is
/usr/local/php/php.ini and a call to
phpinfo() will reveal this information.
If a php.ini is not used, PHP will use all default values.
See also the related FAQ on
finding php.ini.
-
Locate or set the DocumentRoot
This is the root directory for all the web files. Files in this directory
are served from the web server so the PHP files will parse as PHP before
outputting them to the browser. A typical default path is
/Library/WebServer/Documents but this can be set to
anything in httpd.conf. Alternatively, the default
DocumentRoot for individual users is
/Users/yourusername/Sites
-
Create a phpinfo() file
The phpinfo() function will display information about PHP.
Consider creating a file in the DocumentRoot with the following PHP code:
-
Restart Apache, and load the PHP file created above
To restart, either execute sudo apachectl graceful in
the shell or stop/start the "Personal Web Server" option in the
OS X System Preferences. By default, loading local files in the browser
will have an URL like so:
http://localhost/info.php Or using the DocumentRoot
in the user directory is another option and would end up looking like:
http://localhost/~yourusername/info.php
The CLI (or CGI in older versions) is
appropriately named php and likely exists as
/usr/bin/php. Open up the terminal, read the
command line section of the PHP
manual, and execute php -v to check the PHP version of
this PHP binary. A call to phpinfo() will also reveal
this information.
User Contributed Notes
Anonymous7 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.
Julee3 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
cweiske at cweiske dot de1 year ago
On recent (10.8/10.9) macs, the apache php config file is located at /etc/apache2/others/php5.conf
parampal1 year 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
jaffle7 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 in7 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>