How do you get php working on Mac OS X?

I have recently updated to Lion and enabled Web Sharing in the System Preferences but I am unable to get php working.

I added an info file to the web root directory and it outputs the file as text.

info.php
with the content
<?php phpinfo(); ?>

Solution 1:

(Edit: This method appears to work fine for 10.9 (Mavericks), 10.10 (Yosemite) and 10.11 (El Capitan), so I figured I'd mention that for any new influx of slightly frustrated OS X updaters :D )

Edit your /etc/apache2/httpd.conf and make sure the line:

LoadModule php5_module libexec/apache2/libphp5.so

...exists. I think it's commented out by default in the standard OS X config, but from what I remember, you just need to uncomment it, then re-start Apache:

sudo apachectl restart

And you should be good to go.

Solution 2:

UPDATE: Please note that this was written for OS X pre-(High) Sierra. If you run OSX 10.12 or newer, please follow this more than excellent guide by Andy Miller: macOS 10.15 Catalina Apache Setup: Multiple PHP Versions


I too like to use things that are basically already there. I don't see why anyone would use MAMP or AMPPS (or any other packed 3rd party out-of-box webserver app) when Mac OS X comes with apache and PHP by default.

Took me a couple of tries to get it working, so here is basically what did it for me and hopefully it'll help you guys save a little time.

Like Matt Gibson said, start terminal and type: (sudo requires your root password)

sudo nano /etc/apache2/httpd.conf

Then uncomment this line by removing the '#' in front of it (ctrl+v can be used as page-down)

LoadModule php5_module libexec/apache2/libphp5.so

To make sure you can include files etc in PHP, scroll to "User _www" (in my case) and change that to: (where "yourusername" is the user you login with)

User yourusername

You can leave the group as-is, "Group _www" by default on a fresh OS X Mountain Lion install.

On default apache only looks for index.html, so search for "DirectoryIndex index.html" and change that to: (adding index.html at the end is optional of course)

DirectoryIndex index.php index.html index.htm

Exit and save by pressing ctrl+x (and confirm with "y")

Then restart apache:

sudo apachectl restart

My phpinfo(); returned with a PHP Version 5.3.15

==================

Since I find it useful to have my local sites in my user dir, I created a directory /Users/yourusername/Sites (which isn't there on default anymore in Mountain Lion).

Again, edit httpd.conf via "sudo nano /etc/apache2/httpd.conf" and ...

Scroll down to "DocumentRoot" and change it to: (where "yourusername" is the username you login with)

DocumentRoot "/Users/yourusername/Sites/"

Scroll to where it says "# This should be changed to whatever you set DocumentRoot to." and change the next line to: (where "yourusername" is the username you login with)

<Directory "/Users/yourusername/Sites/">

Then exit and save by pressing ctrl+x (and confirm with "y")

Restart apache.