I use MAMP Pro both at home and at work for development. It quick, it’s easy and I really don’t have to fiddle with it a lot after it is set up. It’s perfect for me.
At work we have a project to be built with Codeigniter sitting on a Linux machine but we wanted to use Microsoft SQL Server on a different machine as the database. Turns out, it’s not a simple as changing the database type in Codeigniter to “mssql” to get it up and running. If this is all you do, you get the dreaded white screen. You need a PHP extension to do it. Problem is, Microsoft only makes this PHP extension for Windows. There are a lot of tutorials out there on how to build the extension yourself on Mac or Linux machine (this site for example), but none seemed to work for me.
Instead of setting up a Windows virtual machine and being forced into developing that way, I decided to install Zend Server CE. Zend comes with a MSSQL extension, it just needs to be enabled.
This tutorial does include Terminal work. I am going to walk through step-by-step, so even if you are not comfortable with Terminal, you will be up and running with Zend Server CE in no time. The only requirement is you are running an Intel Mac OS X.
-
Download Zend Server CE. CE (Community Edition) is free.
-
Install Zend Server CE like you would any other application. You can optionally drop/drop Zend Controller.app into your applications directory if you want.
-
Open Terminal. Terminal can be found at /Applications/Utilities/Terminal.app
You can also open it from Spotlight by typing “Terminal”
-
OS X comes with Apache already installed. We don’t want to use that version. We want to use the Zend Server version.
In Terminal type:
sudo /usr/local/zend/bin/zendctl.sh stop
To stop Zend Server. Then type:
sudo apachectl stop
Enter your password if prompted
-
We need to move apachectl to a safe place, such as your home directory. In Terminal type:
cd /usr/sbin/
sudo mv apachectl /Users/YOUR_USERNAME/
-
Then create a symbolic link to Zend Server’s apachectl. In Terminal type:
sudo ln -s /usr/local/zend/apache2/bin/apachectl ./
-
Start Zend Server’s Apache. In Terminal type:
sudo apachectl start
You should then see:
/usr/sbin/apachectl start [OK]
-
If you go to http://localhost/ in your browser, you will either get a forbidden or a 404 message. We’ll change that next.
-
Zend Studio’s Apache comes preconfigured to use port 10088. Let’s change this to port 80 like the default Apache port uses.
Now we are getting into vi editing. I think this scares a lot of people. But don’t worry. It’s very simple.
We are going to edit our httpd.conf file. In Terminal type:
sudo vi /usr/local/zend/apache2/conf/httpd.conf
Enter your password when prompted
-
You are in vi edit mode so you won’t be able to type in Terminal like you normally would. Typing only gives you the the OS X bump sound. That’s normal. You can use the up, down, left, right arrow keys.
Look for the line that says “Listen 10088″
In Terminal, type “i” to go into edit mode to start editing the file. At the bottom of the Terminal window it will say “– INSERT –” to notify you that you are editing the file.
-
With your blinker over the “L” on “Listen”, type “#” to comment out that line
Use the down arrow to go to the next line.
Type:
Listen 80
-
Since we are already editing this file, we will go ahead and change our root directory since, as I mentioned earlier, the /usr directory is a hidden directory.
Use the down arrow to scroll down to where it says
DocumentRoot "/usr/local/zend/apache2/htdocs"
With your blinker over the “D” on “DocumentRoot”, type “#” to comment out that line
Use the down arrow to go to the next line.
Type:
DocumentRoot "/Users/YOUR_USERNAME/Sites"
This is the default web root for OS X sites. This is a pretty good place to put out root as well.
-
Use the down arrow again to scroll down to where it says
<Directory "/usr/local/zend/apache2/htdocs">
With your blinker over the “<”, type “#” to comment out that line
Use the down arrow to go to the next line.
Type:
<Directory "/Users/YOUR_USERNAME/Sites">
-
We are done editing this file. Now we need to save it. In Terminal, hit the escape key to edit out of editing mode. The “– INSERT –” at the bottom will go away.
In Terminal again, type “:x”. This exits vi mode and saves what you changed
-
Restart apachectl type typing:
sudo apachectl restart
Enter your password when prompted
-
If you go to http://localhost/ in your browser, you will see the default Mac OS X homepage now.
-
To configure Zend Framework, type:
sudo ln -s /usr/local/zend/share/ZendFramework/bin/zf.sh ./zf
-
To Configure Pear, type
sudo ln -s /usr/local/zend/bin/pear ./
sudo pear upgrade pear
-
Now we have to configure MySQL. In terminal type:
sudo ln -s /usr/local/zend/mysql/bin/mysql ./
sudo ln -s /usr/local/zend/mysql/bin/mysqladmin ./
-
We have to edit some settings in my.cnf for MySQL, so we go back to vi. In Terminal, type:
sudo vi /usr/local/zend/mysql/data/my.cnf
To edit the file, it is similar to what you did in step 10.
Use the down arrow to scroll down to where it says:
socket = /usr/local/zend/mysql/tmp/mysql.sock
With your blinker over the “s” on “socket”, type “#” to comment out that line
Use the down arrow to go to the next line.
Type:
socket = /tmp/mysql.sock
-
By default, the password that comes with Zend Server is blank. You can change this by removing the “#” next to “password” and then changing “you_password” to whatever you want. Make sure you remember what the password is though.
-
To save the file, it is similar to what you did in step 14.
-
Configure phpMyAdmin. Since we changed the web root for Apache, we will have to create a Directory entry and Alias for phpMyAdmin, since it exists somewhere else. To edit the httpd.conf file again, in Terminal type:
sudo vi /usr/local/zend/apache2/conf/httpd.conf
Enter your password when prompted
-
To start editing the file, use similar steps from step 10.
Somewhere in the file (I put it at the very end), type:
Alias /phpMyAdmin /usr/local/zend/share/phpmyadmin
<Directory "/usr/local/zend/share/phpmyadmin">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
* Hint: Yes, you can copy/paste this if you don’t want to type it all out yourself.
To save the file, use similar steps from step 14.
-
Go ahead and restart Zend Server. In Terminal, type:
sudo /usr/local/zend/bin/zendctl.sh restart
Once installed, in your applications directory, open ZendServer.app. This will open a browser window. Go through the three steps. Congratulations! You have Zend Server CE set up and running. But we aren’t done yet.
By default, the root folder of your Zend Server is at /usr/local/zend/htdocs. Since /usr is a hidden directory, it’s not easily accessible.
But first…
Where do I put the file for my website(s)?
Files will be places in /Users/YOUR_USERNAME/Sites
Yes, of course you can create directories within that folder.
What is the URL for my site?
The root of your site is now at http://localhost/ If you have a directory within the /Users/YOUR_USERNAME/Sites directory, the URL would become http://localhost/FOLDER_NAME
To configure Zend Server, you can get to it by going to http://localhost:10081/ZendServer/ or simply by opening ZendServer.app
phpMyAdmin is located at http://localhost/phpMyAdmin The default username is “zend” and the password is left blank. You can also use “root” as the username. Again, with no password.
How do I start/stop/restart Zend Server?
To start Zend Server, in Terminal type:
sudo /usr/local/zend/bin/zendctl.sh start
To stop Zend Server, in Terminal type:
sudo /usr/local/zend/bin/zendctl.sh stop
To restart Zend Server, in Terminal type:
sudo /usr/local/zend/bin/zendctl.sh restart
Uninstalling Zend Server
-
Open Terminal
-
Enter
sudo /usr/local/zend/bin/uninstall.sh
This will:
- Stop all Zend Server processes
- Delete all Zend Server installed files
- Remove the ZendServer.app from /Applications
- Remove Zend users
-
It will ask for your password. Enter your password
-
It will ask you if you are sure you want to remove Zend Server. Type “yes” (without the double quotes)
-
It tells you it will a couple directories, including your MySQL databases. Type “cont” (without the double quotes) to continue
-
In your applications directory, drag Zend Controller.app to the trash (if it is installed)
This is a great guide, but it doesn’t specifically mention how to enable the mssql extension once you have Zend Server installed. To do that, the easiest way is to go to the Zend control panel:
http://localhost:10081/ZendServer/
From there, go to the Server Setup | Extensions tab and enable the mssql extension.
Or you can edit php.ini directly (/usr/local/zend/etc/php.ini) and restart Apache (sudo zendctl restart-apache)
I spent hours combing the web some help on configuring this properly until find this!
Thank you very much.
Just wanted to thank you. I never do this but i spent hours trying to configure this as its 3am… Got it up in 5 mins after reading this.
Question: When I tried step 18, configuring pear, the following was the output:
Could not get contents of package “/usr/local/zend/bin/pear”. Invalid tgz file.
Any ideas on how I should proceed? Thank you and great, meticulous directions.
@Quint The tgz file gets downloaded to your computer before installing. So it’s there it just couldn’t install for some reason. Without seeing the full output of the error message and what is before the error message, you could try something like this:
sudo pear install –offline /Applications/MAMP/bin/php5.3/bin/pear/PEAR-1.9.1.tgz
Or whatever Terminal is saying the path to the file and file version is.
So I installed Zend Server CE, changed ports to 80, changed root directory to Sites … but I didn’t like it. So I uninstalled ZSCE with “sudo /usr/local/zend/bin/uninstall.sh” and went back to MAMP. However, since I installed/uninstalled ZSCE, MAMP can no longer access “localhost” … 127.0.0.1 works fine.
No cool at all. Any ideas?
@dcolumbus
I don’t think there should be any overlap between the two. You might check that /Library/StartupItems/ZendServer_init has been removed. Also, the easiest thing might be to reinstall MAMP.
Thanks for this just what i have been looking for. I will try this over the next few days I was not sure if Zend replaced the default apache install and now I know
Also if I already have mysql installed and working with standard osx apache do I need To doe mysql steps? It’s just a connection string?
Great document on installing Zend Server on Mac OS X. I was ready to give up after installing it myself as I could not use the Mac OS X finder to locate the PHP files I created in Zend Studio. Reconfiguring the base directory to \Users\MY_USER_NAME\Sites solved everything and I will continue to investigate the use of Zend Server and Zend Studio.
Thanks!
i tried this one and seems to be fine. But as soon i restarted my mac there is always a problem on mysql
RROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/usr/local/zend/mysql/tmp/mysql.sock’ (2)
And idea?
TIA
ok, seems ok now with my problem on mysql, i just ignore step no 20
instead of socket = /tmp/mysql.sock i used socket = /usr/local/zend/mysql/tmp/mysql.sock
Mike
TIA
have tried everything and I can not get on to myPhpAdmin. NO password works. I tried editing the /usr/local/zend/mysql/data/my.cnf to put in a password. that still does not work
I get the following terminal session …
sudo /usr/local/zend/mysql/bin/mysql.server startPassword:
Warning: World-writable config file ‘/usr/local/zend/mysql/data/my.cnf’ is ignored
Warning: World-writable config file ‘/usr/local/zend/mysql/data/my.cnf’ is ignored
Starting MySQL
. SUCCESS!
So MySQL started but the config file is ignored.
Even if I do get a password changed then what is the user name? ‘zend’, ‘root’, blank?
I has installed MAMP before zend and I can get the MAMP SQL to run ok. When I shut that one down and start the Zend MySQL install I can get get past the log in.
Thanks for any assistance.
What happened to Zend Server CE? I can’t find it on Zend’s website, it just redirects to the Free Version, which has a trial period and inside terminal it doesn’t look like what you posted. Also my google search results don’t turn it up, nor is it hosted on any of the torrent sites I don’t visit.
What can I do?