Return to site

Lamp For Mac Os X

broken image


How do I replace the lamp? How do I reset the lamp timer to zero? When should I replace the projection lamp? When and how should I clean or replace the air filter? How do I get a replacement lamp for my product? Can I access the lamp and air filter with the ceiling mount installed? MAMP for Windows. MAMP is a free, local server environment that can be installed under macOS and Windows with just a few clicks. MAMP provides them with all the tools they need to run WordPress on their desktop PC for testing or development purposes, for example. You can even easily test your projects on mobile devices.

Introduction

LAMP/WAMP/MAMP Server

To develop PHP webapps, you need to setup Apache, MySQL and PHP, in a so called LAMP (Linux/Apache/MySQL/PHP), WAMP (Windows/Apache/MySQL/PHP), or MAMP (Mac OS/Apache/MySQL/PHP) environment, for your operating platform.

There are two ways of setting up LAMP/WAMP/MAMP:

  1. Install individual software components, i.e., Apache, MySQL and PHP.
  2. Install a bundle package, which includes all software components needed for developing PHP webapps.

For beginners running on Windows/Mac OS, I certainly recommend the bundle approach for simplicity (although they might not bundled the latest releases). These are the bundles available:

  • XAMPP @ https://www.apachefriends.org/index.html (Cross-platform for Windows, Mac OS and Linux).
  • WampServer @ http://www.wampserver.com/en/ (for Windows only).
  • Zend Server (@ http://files.zend.com/help/Zend-Server-Community-Edition/zend-server-community-edition.htm) (Cross-platform for Windows, Mac OS and Linux).
  • Easy PHP (@ http://www.easyphp.org/).
  • Others.

I shall describe how to install and setup some of these bundles in Section 'LAMP/WAMP/MAMP Servers'.

Integrated Development Environment (IDE) with Debugger

You also need to install an IDE, such as Eclipse PHP Development Tool (PDT). Read Section 'How to install Eclipse PDT'.

You need to setup these debugging tools and be familiar with:

  • Server-side PHP debugging with xDebug (or Zend Debugger), and
  • Client-side JavaScript debugging with Firebug.

Read Section 'Debugging PHP Webapps'.

Programming Languages

I shall assume that you have some basic knowledge on these programming languages. Otherwise, read the relevant sections.

  1. Database programming: SQL (or PostgreSQL). Read the 'SQL Section'.
  2. Sever-side programming: PHP (or Python, or Perl). Read 'PHP Section'
  3. Client-side programming: HTML, CSS and JavaScript. Read 'Client-side Programming: HTML/CSS/JavaScript Section'. In addition, BootStrap and jQuery for advanced programming.
Version Control System

Set up a Version Control System, such as Git, for backup, version control and collaboration. Read 'How to setup and get started with Git'.

LAMP/WAMP/MAMP Server

In this section, I shall briefly describe how to install and customize some of the AMP bundles. To install individual components, read 'How to install and get start with Apache', 'How to install and get started with MySQL'.

XAMPP (For Windows/Mac OS/Linux)

The XAMPP (stands for Cross-platform, Apache, MySQL, PHP and Perl @ https://www.apachefriends.org/index.html) bundles Apache, MySQL, PHP and Perl, for Windows, Linux and Mac OS. It also includes FileZilla FTP Server, Mercury Mail Server, and Tomcat Server; plus tools PhpMyAdmin, Webalizer, and Fake Sendmail.

At the time of writing, XAMPP 1.8.3 bundles PHP 5.5.15, Apache 2.4.10, MySQL 5.6.20 and PhpMyAdmin 4.2.7.1.

Installing XAMPP on Windows
  1. Download: Goto XAMPP mother site at https://www.apachefriends.org/index.html ⇒ Download the Windows package (e.g., xampp-win32-1.8.3-5-VC11-installer.exe).
  2. Install: Simply run the downloaded Installer. Choose your installation directory. I shall assume that XAMPP is installed in 'd:xampp', denoted as , in this article.
Installing XAMPP on Mac OS [@@To Check!!]
  1. Download: Goto XAMPP mother site at https://www.apachefriends.org/index.html ⇒ Download the Mac OS package (e.g., .....).
  2. Install: Simply run the downloaded Installer. Choose your installation directory. I shall assume that XAMPP is installed in '......', denoted as , in this article.
Starting/Stopping XAMPP Servers

Launch the 'XAMPP Control Panel' ('xampp-control.exe' for Windows, @@To Check ...... MAC OS) under the XAMPP installed directory. A little icon appears in the Icon Tray. Right-click on the icon ⇒ 'Show/Hide' to show the 'full' Control Panel Window.

The XAMPP Control Panel allows you to start/stop each of these servers: Apache HTTP Server, MySQL Database Server, FileZilla FTP Server, Mercury Mail Server, and Tomcat HTTP Server. You can also check their configurations ('Config'), logs ('Logs') and launch the administrator tools such as PhpMyAdmin for MySQL ('Admin').

Verifying the Apache/MySQL/PHP/Perl Installation

By default, a directory called 'htdocs' was created under the XAMPP installed directory, which serves as the Apache's document root directory.

To verify the installation, launch the XAMPP Control Panel. Start the Apache and MySQL servers by clicking the 'Start' buttons.

  • On your browser, issue 'http://localhost' to get the welcome page. Select your language, which leads you to the XAMPP home page (under 'htdocs/xampp'). You can now verify all the components by clicking on the info links on the left panel, e.g., phpinfo() for PHP, perlinfo() for Perl, PhpMyAdmin for MySQL.
  • On your browser, issue 'http://localhost/phpmyadmin' to access the MySQL via PhpMyAdmin. Select the 'Users' tab. which reveals that no password is set for the superuser root and the anonymous user. (You can also click the 'Admin' button under MySQL to launch PhpMyAdmin.)

To shutdown XAMPP, stop all the services and press 'Quit'.

Write a Hello-world PHP Script

By default, the Apache's document root directory is located at '/htdocs'. Use a programming editor (such as notepad++ for Windows, or gedit for Ubuntu/Mac OS) to write a simple PHP script called 'hello.php' and save under the 'htdocs' directory, as follows:

To run this PHP script, start a browser and issue URL http://localhost/hello.php, assuming that Apache server has been started.

Another Example: Write another PHP script called 'phpinfo.php' (saved under 'htdocs') to display the PHP settings under Apache, as follows:

Run the script by issuing URL 'http://localhost/phpinfo.php'.

XAMPP Directory Structure

XAMPP is organized in the sub-directories. The important ones are:

  • htdocs: the default apache's document root directory.
  • apache, mysql, FileZillaFTP, MercuryMail, tomcat: for the server software.
  • phpMyAdmin: for the PhpMyAdmin tool.
  • php, perl: for the languages.
Apache Configuration

The Apache's main configuration file 'httpd.conf' is located at 'apacheconf'. Take note of the following configuration directives:

  • The core directives are: The ServerRoot specifies the apache's installed directory. Listen specifies the TCP port number for Apache web server, in this case, default of TCP port 80. The DocumentRoot specifies the root directory of the web server.
  • The directives related to directory authorization are: [TODO] Explanation
  • The directives related to logging are:
PHP Configuration

The PHP's main configuration file 'php.ini' is located from 'php' (as revealed by phpinfo() output).

[TODO] Explanation

MySQL Configuration

The MySQL's main configuration file 'my.ini' is located at 'mysqlbin'. Take note of the following settings:

  • MySQL Server Daemon (mysqld.exe) The port specifies the TCP port number for the MySQL server (defaulted to 3306). The basedir specifies the MySQL installed directory. The datadir specifies the databases directory. The log-error specifies the MySQL error log file.
  • MySQL Interactive Client (mysql)
Customizing MySQL

The default MySQL installation creates a superuser called 'root' without password. It also provides an anonymous user with no password. You need to

  1. Set a password for 'root'.
  2. Remove the anonymous user.
  3. You should not use superuser 'root' for normal daily operations. Instead, create a new user (says xampppuser) for operational use.

There are a few ways to administer MySQL, via the graphical client 'PhpMyAdmin', or command-line client 'mysql'.

  • PhpMyAdmin: login to PhpMyAdmin via 'http://localhost/phpmyadmin'. Click the 'Users' tab ⇒ Set password for root (for all hosts) (Select ⇒ Edit Privilege ⇒ Change Password ⇒ GO ⇒ Refresh). Delete the anonymous user denoted as 'Any' User (Select ⇒ Remove selected users ⇒ GO). Create a new user called 'xampppuser' by clicking the 'Add User'. Grant all privileges to begin with.
    Note: Once you set a password for root, you may need to modify the PHP configuration file in order to login with the new password. See 'PhpMyAdmin PHP Configuration'.
  • MySQL command-line client ('mysql.exe'): Read 'How to setup MySQL'.
Start a new PHP Webapp

To start a new PHP webapp, create you working directory under 'htdocs' (says directory 'hello'). You can launch your webapp via URL 'http://localhost/hello'. Alternatively, you can use the 'htdocs' directory, by removing all the existing contents. You can access the webapp via URL 'http://localhost'.

For Production, configure a virtual host (in Apache) for your project.

WampServer 2.5 (For Windows)

WampServer (@ http://www.wampserver.com/en/) bundles Apache, MySQL and PHP for Winodws in a single package. It also includes tools such as PhpMyAdmin (a MySQL database administration tool), SQL Buddy (an alternative to PhpMyAdmin), XDebug (a PHP Debugging Tool), WebGrind (a PHP Profiling Tool).

At the time of writing, WampServer 2.5 bundles Apache 2.4.9, MySQL 5.6.17, PHP 5.5.12, PhpMyAdmin 4.1.14, SqlBuddy 1.3.3 and XDbebug 2.2.5.

Installing WampServer

To Install WampServer:

  1. Download: Goto WampServer mother site at http://www.wampserver.com/en ⇒ Select 'DOWNLOADS' ⇒ Choose the appropriate package for your platform (32-bit or 64-bit) ⇒ Download the installation file (e.g., wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b.exe).
  2. Install: To install the WampServer, simply run the downloaded installation file. Choose your installation directory. I shall assume that WampServer is installed in 'd:WampServer', denoted as , in this article.
Starting/Stopping WampServer

To start the WampServer, choose 'Start WampServer' from the 'Start' menu; or run 'wampmanager.exe' from the WampServer installed directory.

An little icon will appear on the icon tray. 'Green' indicates that all the services have started; while 'Red' indicates that all the services have stopped. Click on the icon to open the 'WampServer Control Panel'. You could:

  • Under 'Quick Admin': Start/Stop/Restart all the services (Apache & MySQL services).
  • Put the server online (so that user can access the server over the Internet) or offline.
  • Configure Apache, MySQL and PHP, under their respective sections.
  • Launch 'PhpMyAdmin'.
  • Others.

To shutdown the program, click 'Stop All Services' on WampServer Control Panel ⇒ right-click on the WampServer icon ⇒ Exit.

Verifying Apache/MySQL/PHP Installation

By default, a directory called 'www' was created under the WampServer installed directory, which serves as the Apache's document root directory. A welcome page called 'index.php' was also created in the 'www' directory.

To verify the installation:

  1. Start the WampServer. Wait for the icon to turn green indicating all services have started (otherwise, click the icon and select 'Start All Services'). For testing, put the server 'offline' to disable external access (i.e., it can only be accessed in localhost).
  2. To verify Apache: Start a browser and issue URL http://localhost. This will in turn request for 'index.php'. The index page provides links to documentations, aliases and tools. The installation creates these aliases for Apache: phpmyadmin, sqlbuddy, phpsysinfo for the respective services. You can issue URL http://localhost/alias-name to access these services.
  3. To verify MySQL: Issue URL http://localhost/phpmyadmin to access the MySQL via PhpMyAdmin. Click on the 'Users', which reveals that no password was set for the superuser root and the anonymous user.
  4. To verify PHP: Issue URL http://localhost/?phpinfo=1, which runs the phpinfo() function.
Write a Hello-world PHP Script

Use a programming editor (such as notepad++ for Windows, or gedit for Ubuntu/Mac OS) to write a simple PHP script called 'hello.php' and save under the 'www' directory, as follows:

To run this script, start a browser and issue URL http://localhost/hello.php, assuming that the Apache server has been started.

Another Example: Write another PHP script called 'phpinfo.php' (saved under 'www') to display the PHP settings under Apache, as follows:

Run the script by issuing URL 'http://localhost/phpinfo.php'.

WampServer Directory Structure

WampServer is organized in the following directory structure. The important ones are:

  • bin: contains binaries for Apache, MySQL, and PHP, in their respectively sub-directory. For each component, you can install multiple versions and select one of them in operation.
  • apps: contains server-side tools such as PhpMyAdmin, SQL Buddy, and WebGrind.
  • tools: contains client-side tool such as xdc (XDebug Client).
  • www: the default apache's document root directory.
  • logs: contains apache, php, mysql error/access logs.
  • alias: contains the the apache's alias configuration for PhpMyadmin, SQL Buddy and WebGrind.
Apache Configuration

The Apache's main configuration file 'httpd.conf' is located at 'binapacheApache2.x.xxconf'. Take note of the following configuration directives.

  • The core directives are: The ServerRoot specifies the apache's installed directory. Listen specifies the TCP port number for Apache web server, in this case, default of TCP port 80. The DocumentRoot specifies the root directory of the web server.
  • The directives related to directory authorization are: [TODO] Explanation
  • The directives related to logging are:
PHP Configuration

The PHP's main configuration for Apache2 'php.ini' is located at 'binapacheApache2.x.xxbin' (as revealed by phpinfo() output).

[TODO] Explanation

MySQL Configuration

The MySQL's main configuration file 'my.ini' is located at 'binmysqlmysql5.x.xx'. Take note of the following settings:

  • MySQL Server The port specifies the TCP port number for the MySQL server (defaulted to 3306). The basedir specifies the MySQL installed directory. The datadir specifies the databases directory. The log-error specifies the MySQL error log file.
  • MySQL Server Daemon (mysqld.exe)
  • MySQL Interactive Client (mysql)
Customizing MySQL

The default MySQL installation creates a superuser 'root' without password. It also creates an anonymous user with no password. You need to:

  1. Set a password for 'root'.
  2. Remove the anonymous user.
  3. You should not use superuser 'root' for normal daily operations. Instead, create a new user (says wampuser) for operational use.

There are many ways to administer MySQL, via the graphical client 'PhpMyAdmin' or 'SQL Buddy'; or command-line client 'mysql.exe'.

  • PhpMyAdmin: login to PhpMyAdmin via 'http://localhost/phpmyadmin'. Click the 'Users' tab ⇒ Set password for root (for all hosts) (Select ⇒ Edit Privilege ⇒ Change Password ⇒ GO ⇒ Refresh). Delete the anonymous user denoted as 'Any' User (Select ⇒ Remove selected users ⇒ GO). Create a new user called 'wampuser' by clicking the 'Add User'. Grant all privileges to begin with.
    Note: Once you set a password for root, you may need to modify the PHP configuration file in order to login with the new password. See 'PhpMyAdmin PHP Configuration'.
  • SQL Buddy: login to SQL Buddy via 'http://localhost/sqlBuddy'. Click 'Submit' with empty password for 'root'. Select 'Users'. Set password for all root users of all hosts (Select ⇒ Edit). Remove the anonymous user (the row with empty user name) (Select ⇒ Delete). Create a new user called 'wampuser' by filling in 'Add a New User'. Grant all privileges except the 'Grant option' to begin with.
  • MySQL command-line client ('mysql.exe'): Read 'How to setup MySQL'.
Start a new PHP Webapp

To start a new PHP webapp, create you working directory under 'www' (says directory 'hello'). You can launch your webapp via URL 'http://localhost/hello'. Alternatively, you can use the 'www' directory, by removing all the existing contents. You can access the webapp via URL 'http://localhost'.

For Production, configure a virtual host (in Apache) for your project.

LAMP Server (For Ubuntu)

Read 'How to Install LAMP Server on Ubuntu'.

Lamp For Mac Os X 10.7

Eclipse PDT (PHP Developer Tool)

Eclipse PDT (@ http://www.eclipse.org/pdt) is an IDE for PHP webapp development. The main advantage is it can debug PHP server-side scripts with XDebug or Zend Debugger extension.

Alternative PHP IDEs are: NetBeans (@ http://www.netbeans.org), PHPEclipse (@ http://www.phpeclipse.com).

Install Eclipse PDT
  • If you have never installed any Eclipse package, goto Eclipse mother site @ http://www.eclipse.org ⇒ Downloads ⇒ Select 'Eclipse for PHP Developers':
    • For Windows: Download the ZIP file (32-bit or 64-bit). Unzip the downloaded file in a directory of your choice.
    • For Mac OS: Read 'How to Install Eclipse on Mac OS'.
    • For Ubuntu: Read 'How to Install Eclipse on Ubuntu'.
  • If you have installed an Eclipse package (such as Eclipse IDE for Java Developers), you can add the PDT plugin by:
    1. Launched Eclipse ⇒ Select 'Help' menu ⇒ 'Install New Software'.
    2. The 'Install' dialog appears. In 'Work with' field, pull down the drop-down menu and select 'Neon - http://download.eclipse.org/releases/neon' for Eclipse 4.6 (or 'Mars' for Eclipse 4.5; or 'Luna' for 4.4; or Kepler for 4.3; or Juno for 4.2; or helios for Eclipse 3.7).
    3. In the 'Name' box, expand 'Programming Language' node ⇒ Check 'PHP Development Tools (PDT)' ⇒ Next ⇒ Accept the license ⇒ Finish.
Configure Eclipse PDT with XDebug

Assume that you have install xDebug (which is bundled with XAMPP and WampServer).

Launch Eclipse ⇒ Select 'Window' menu ⇒ Preferences ⇒ Expand the 'PHP' node:

  1. Select 'Servers' ⇒ Check that there is an entry with 'Name' of 'Default PHP Server' and 'URL' of 'http://localhost' ⇒ Select the entry ⇒ Edit ⇒ Select 'Debugger' tab ⇒ In 'Debugger': Select 'XDebug'.
  2. Select 'PHP Executable' ⇒ 'Add':
    • In 'Name', Enter a name, e.g. 'myPHP', 'WampServer' or 'XAMPP'.
    • In 'Executable Path', enter the location of PHP executable 'php.exe' (e.g., 'binphpphp5.x.xphp.exe' for WampServer, 'phpphp.exe' for XAMPP (Windows)).
    • In 'PHP ini file', enter the php configuration file used by the Apache (e.g., 'binapacheApache2.2.xxbinphp.ini' for WampServer. 'phpphp.ini' for XAMPP (Windows)).
    • In 'PHP Debugger', select 'XDebug' (which is bundled in WampServer and XAMPP).
  3. Select 'Debug':
    • In 'Server', select 'Default PHP Server'.
    • In 'PHP Executable', select the PHP Executable configured in the previous step (i.e., 'WampServer' or 'XAMPP').
  4. Select 'Manual' ⇒ Check that there is an entry with 'Site Name' of 'php.net' with 'URL' of 'http://www.php.net/manual/en'.
  5. Browse through the other settings for PHP.
Writing a Hello-world PHP program in Eclipse PDT
  1. Launch Eclipse. Choose a workspace.
  2. Create a new PHP project: 'File' ⇒ New ⇒ PHP Project (or 'Project...' ⇒ PHP ⇒ PHP Project).
    • In 'Project Name', enter a name for the project, e.g., 'hello'.
    • In 'Contents', select 'Create project at exiting location', enter your web server's root directory followed by the project name (e.g., 'wwwhello' for WampServer, 'htdocshello' for XAMPP - Make a sub-directory called 'hello' under 'www' or 'htdocs') ⇒ 'Finish'.
  3. Write your PHP program: Right-click on the project 'hello' ⇒ 'New' ⇒ 'PHP File'. Enter the following codes and saved as 'HelloObj.php':

    Again, create a new PHP file for the following driver program 'HelloDriver.php':

  4. To run the program, right-click anywhere on 'HelloDriver.php' ⇒ 'Run As' ⇒ 'PHP Web Application' (output shown in Eclipse internal browser or external browser) ⇒ The launch URL shall be http://localhost/hello/HelloDriver.php.
    To select your browser, select 'Window' ⇒ Preferences ⇒ General ⇒ Web Browser ⇒ Choose your browser, such as internal web browser, or external web browser (Firefox, IE, etc).
    The browser shall display 'Hello World!'.
    Note: You can also run this script as a 'PHP CLI Application', i.e., a standalone command-line interface program instead of server-side script, as the above program are purely PHP, with no HTML statements.
Debugging PHP Server-side Script

HERE.

PhpMyAdmin

PhpMyAdmin (http://www.phpmyadmin.net) is a popular open source web-base tool intended to handle the administration of MySQL database system.

Installing PhpMyAdmin

PhpMyAdmin is bundled in WampServer, installed under 'appsphpmyadmin4.x.xx'. It is also bundled in XAMPP, under 'phpmyadmin'.

For Ubuntu, read 'Install PhpMyAdmin for Ubuntu'.

Launching PhpMyAdmin

PhpMyAdmin is an Apache PHP application. Typically, an alias called 'phpmyadmin' is defined which maps to its installed directory.

To launch PhpMyAdmin, start Apache and MySQL servers. Then, start a browser and issue URL http://localhost/phpmyadmin.

Using PhpMyAdmin

[TODO]

PhpMyAdmin's Configuration for Apache
  • In WampServer: PhpMyAdmin is configured in 'aliasphpmyadmin.conf', which is included into Apache's main configuration file 'binapacheapache2.4.9confhttpd.conf' via directive 'Include '/alias/*''. In the 'phpmyadmin.conf', an alias called '/phpmyadmin' is defined which maps to PhpMyAdmin's directory '/apps/phpmyadmin4.x.xx/'.
  • In XAMPP: PhpMyAdmin is configured in 'apacheconfextrahttpd-xampp.conf', which is included into Apache's main configuration file 'apacheconfhttpd.conf' via an Include directive. In the configuration, an alias called '/phpmyadmin' is defined which maps to PhpMyAdmin's directory at '/phpMyAdmin/'.
PhpMyAdmin's PHP Configuration

PhpMyAdmin is a PHP app running under Apache. The PHP app uses a configuration file called 'config.inc.php', located at the PhpMyAdmin installed directory. The default configuration uses so-called 'config' authentication type which requires you to hardcode the MySQL user and password inside the configuration file:

If you change MySQL root's password, you need to enter the new password into this file, in order to login into MySQL.

I recommend that you change the authentication type to 'cookie', which prompts you to for the login user and password.

Notes on Errors
  • Cannot login using root, after setting password. See above.
  • If you get an error 'Connection for controluser as defined in your configuration failed', see 'http://stackoverflow.com/questions/11506224/connection-for-controluser-as-defined-in-your-configuration-failed-phpmyadmin-xa'. (I encountered this error for XAMPP.)

SQL Buddy

SQL Buddy (http://www.sqlbuddy.com) is an alternative to PhpMyAdmin. SQL Buddy is bundled in WampServer, under directory appssqlbuddy1.3.x. SQL Buddy could be easier to use than PhpMyAdmin.

To use SQL Buddy, start a browser, and issue URL http://localhost/sqlbuddy.

[TODO] more user guide

Debugging PHP Webapps

XDebug for Debugging Server-side PHP Script

XDebug (@ http://xdebug.org) is an PHP extension, that allow you to debug server-side PHP Script running under Apache in Eclipse PDT.

Install xDebug Extension for PHP
  • For WampServer, xDebug module is installed as '/bin/php/php5.x.xx/zend_ext/php_xdebug-2.x.x-5.x-vc11-x86_64.dll'.
  • For XAMPP (Windows), xDebug module is '/php/ext/php_xdebug.dll'.
  • For XAMPP (Mac OS), xDebug module is ...... @@To check
  • For Ubuntu, read 'Install XDebug extension for PHP' for Eclipse PDT'.

To verify that xDebug is installed, search the phpinfo() output (run 'phpinfo.php' written earlier) for 'xdebug', which shall show up as follows:

Configure xDebug for Eclipse PDT
  1. Find the PHP configuration file for Apache from the phpinfo() output, under 'Loaded Configuration File'.
    • For WampServer, it is 'binapacheapache2.4.9binphp.ini'.
    • For XAMPP (Windows), it is '/php/php.ini'.
    • For XAMPP (Mac OS), it is '/php/php.ini'. (@@ To Check)
    • For Ubuntu: See 'Install XDebug extension for PHP' for Eclipse PDT'.
  2. Check if the following lines are included in the PHP configuration file (include them otherwise): Restart the Apache Server.
Example 1: Debugging PHP Server-side Script

Let's trace through the 'hello' PHP Webapp created earlier, which contains two PHP scripts: 'HelloDriver.php' and 'HelloObj.php'.

  1. Set a breakpoint at line 2 of 'HelloDriver.php' by clicking on the left margin.
  2. Right-click on 'HelloDriver.php' ⇒ 'Debug As' ⇒ 'PHP Web Application'.
  3. Switch to 'Debug' perspective.
  4. The program shall break at line 2 of 'HelloDriver.php'. Click 'Step Into (F5)' or 'Step Over (F6)' to trace through the program. Inspect the variables and observe the output at the web browser.
  5. You need to terminate the debugging session by pushing the 'Terminate' button.

Take note that if you check 'Break at First Line' in the debug configuration, the program will pause at the first line of a PHP file. You need to push 'Resume' or 'Step Over'.

Example 2: Debugging PHP Webapp (HTML+PHP)

Create the following two files 'Query.php' and 'ProcessQuery.php', saved under Apache's document root directory.

Note: This code is meant for illustrating PHP webapp debugging. In practice, the two files are often merged into one.

To run the PHP webapp, right-click on 'Query.php' ⇒ Run As ⇒ PHP Web Application

To debug the PHP webapp:

  1. right-click on 'Query.html' ⇒ Debug As ⇒ Debug Configuration ⇒ Select 'Debugger' tab ⇒ Check 'Break at First Line' (which sets a breakpoint at the beginning of each file) ⇒ 'Debug'.
  2. Switch to 'Debug' perspective.
  3. Push 'Resume (F8)' button to run thru the HTML code.
  4. Switch to the browser. Enter something in the textfield and click 'submit'.
  5. Switch back to Eclipse, it now breaks at the first line of 'ProcessQuery.php'.
  6. Click 'Step Into (F5)' or 'Step Over (F6)' to trace through the program. Inspect the variables and observe the output at the web browser.
  7. You need to terminate the debugging session by pushing the 'Terminate' button.

Take note that if your program contains HTML and PHP, your need to switch between the web browser (to enter data) and eclipse (to push 'Resume' to run thru the HTML codes, or 'Step Over/Into' to execute the PHP codes). At times, the browser/eclipse icons on the taskbar brink to remind you to switch over.

Note: I actually intend to name 'Query.php' and 'Query.html', but the XDebug session does not seem to start on HTML (although you could tailor the 'Run configuration' to start running from an HTML file)?! Let me know if you have an answer. For the time being, name all files (may be only the starting page) '.php' even they contains only HTML. This is not really a problem.

Zend Debugger for Debugging Server-side PHP Script

[TODO] Can't install Zend Debugger long time ago. To try again and compare with XDebug. Not critical.

Firebug Plugin for Firefox for Debugging Client-side JavaScript/HTML/CSS

PHP Webapp Exercises

  1. Read 'PHP Basics'.
  2. Read 'PHP MySQL webapps'. Use 'PDO' for database connection.
  3. Convert the 'Java Servlet Case Study ebookshop' from Java Servlet (Tomcat/MySQL) to PHP (Apache/MySQL).
  4. Read HTML, CSS and JavaScript.
  5. Proceed to 'Advanced PHP Webapp Development'.

REFERENCES & RESOURCES

  1. Robin Nixon, 'Learning PHP, MySQL, JavaScript, and CSS', 2nd ed, O'Reilly, 2012.
  2. Timothy Boronczyk, Elizabeth Naramore, Jason Gerner, Yann Le Scouarnec, Jeremy Stolz and Michael K. Glass, 'Beginning PHP6 Apache MySQL Web Development', Wrox Programmer to Programmer, 2009.
  3. Luke Welling and Laura Thomson, 'PHP and MySQL Web Development', 4th edition, Addison-Wesley, 2008.
  4. Dirk Merkel, 'Expert PHP 5 Tools', Packt Publishing, 2010.

Get your Local Web Development Server Up & Running on OSX 10.9 Mavericks

With the new OSX Mavericks being installed faster than any predecessor, getting the AMP stack running on OSX 10.9 Mavericks is is pretty much the same as on OS X Mountain Lion 10.8. This tutorialwill go through the process on getting Apache, MySQL, PHP and phpMyAdmin running on the new Maverick Californian driven OS.

If you had your local development already set up in OSX 10.8 and simply did an upgrade to 10.9, your MySQL, Apache and phpMyAdmin settings should all be good, you just need to enable PHP

This tutorial sets up the AMP stack in more of a traditional way, to use HomeBrew for MySQL and phpMyAdmin you may also want to look at this guide.

Setting Stuff Up

Apache/WebSharing

The web sharing option has not made it back in 10.9, which was previously a GUI option in System Preferences back in 10.7, but fear not Apache is installed ready to be switched on.

No Web Sharing Option in System Preferences

Apache is pre-installed in the OS and needs to be enabled via the command line – this needs to be done in Terminal which is found at /Applications/Utilities/Terminal

For those not familiar with the Terminal, it really isn't as intimidating as you may think, once launched you are faced with a command prompt waiting for your commands – just type/paste in a command and hit enter, some commands give you no response – it just means the command is done, other commands give you feedback – lets get to it….

to start it

to stop it

to restart it

To find the Apache version

The version installed in OSX Mavericks is Apache/2.2.24

After starting Apache – test to see if the webserver is working in the browser – http://localhost – you should see the 'It Works!' text.

Document Root

Document root is the location where the files are shared from the file system and is similar to the traditional names of ‘public_html' and ‘htdocs', OSX has historically had 2 web roots one at a system level and one at a user level – you can set both up or just run with one, the user level one allows multiple acounts to have their own web root whilst the system one is global for all users. It seems there is less effort from Apple in continuing with the user level one but it still can be set up with a couple of extra tweaks. It is easier to use the user level one as you don't have to keep on authenticating as an admin user.

System Level Web Root

– the default system document root is still found at –

http://localhost/

The files are shared in the filing system at –

User Level Root

The other web root direcroty which is missing by default is the ‘~/Sites' folder in the User account. You need to make a 'Sites' folder at the root level of your account and then it will work. Upgrading from a previous OS X version preserves the Sites folder but removes the ability to web serve from it – this is where you need to add in a ‘username.conf' file.

Create a Sites folder at the account root level

Check that you have a 'username.conf' filed under:

If you don't (very likely), then create one named by the short username of the account with the suffix .conf, it's location and permissions/ownership is best tackled by using the Terminal, the text editor ‘nano' would be the best tool to deal with this.

Mac

Launch Terminal, (Applications/Utilities), and follow the commands below, first one gets you to the right spot, 2nd one cracks open the text editor on the command line (swap ‘username‘ with your account's shortname, if you don't know your account shortname type ‘whoami' the Terminal prompt):

Then add the content below swapping in your ‘username' in the code below:

Permissions on the file should be:

If not you need to change…

Restart Apache for the new file to be read:

Then this user level document root will be viewable at:

http://localhost/~username/

Lamp

Override .htaccess

If you are going to use the document root at /Library/WebServer/Documents it is a good idea to allow any .htaccess files used to override the default settings – this can be accomplished by editing the httpd.conf file at line 217 and setting the AllowOverride to All and then restart Apache. This is already taken care of at the Sites level webroot by following the previous step.

PHP

PHP 5.4.17 is loaded in the latest preview of OSX 10.9 Mavericks and needs to be turned on by uncommenting a line in the httpd.conf file.

Use 'control' + 'w' to search within nano and search for ‘php' this will land you on the right line then uncomment the line (remove the #):

Write out and Save using the nano short cut keys at the bottom ‘control o' and ‘control x'

Reload apache to kick in

To see and test PHP, create a file name it 'phpinfo.php' and file it in your document root with the contents below, then view it in a browser.

MySQL

MySQL is again a missing component in OS X 10.9 and needs to be dowloaded from the MySQL site use the Mac OS X ver. 10.7 (x86, 64-bit), DMG Archive version (works fine on 10.9).

When downloading you don't have to sign up, look for » No thanks, just take me to the downloads! – go straight to the download mirrors and download the software from a mirror which is closest to you.

Once downloaded install the 3 components. You may need to adjust the Security and Privacy System Pref to allow installs of 3rd party apps because of the new security feature of Mountain Lion known as the ‘Gatekeeper', which keeps unscrupulous installer packages at bay.

To get around this without changing the global preferences (better!) right click or command click the .pkg installer to bring up the contextual menu and select open, then you get the warning – then click Open.

Install all 3…

The first is the MySQL software, the 2nd item allows MySQL to start when the Mac is booted and the third is a System Preference that allows start/stop operation and a preference to enable it to start on boot.

You can start the MySQL server from the System Preferences or via the command line

To find the MySQL version from the terminal, type at the prompt:

This also puts you in to an interactive dialogue with mySQL, type q to exit.

Install Lamp Mac Os X

After installation, in order to use mysql commands without typing the full path to the commands you need to add the mysql directory to your shell path, (optional step) this is done in your '.bash_profile' file in your home directory, if you don't have that file just create it using vi or nano:

The first command brings you to your home directory and opens the .bash_profile file or creates a new one if it doesn't exist, then add in the line above which adds the mysql binary path to commands that you can run. Exit the file with type 'control + x' and when prompted save the change by typing 'y'. Last thing to do here is to reload the shell for the above to work straight away.

Lamp Stack Mac Os X

You will get the version number again, just type 'q' to exit.

Set the MySQL root password

Note that this is not the same as the root or admin password of OSX – this is a unique password for the mysql root user, use one and remember/jot down somewhere what it is.

Use the single ‘quotes' surrounding the password

Fix the 2002 MySQL Socket error

Fix the looming 2002 socket error – which is linking where MySQL places the socket and where OSX thinks it should be, MySQL puts it in /tmp and OSX looks for it in /var/mysql the socket is a type of file that allows mysql client/server communication.

phpMyAdmin

phpMyAdmin is installed pretty much the same way as before.

Fix the 2002 socket error first if you haven't done so from the MySQL section-

Download phpMyAdmin, the zip package and move the folder with its contents into the document root level renaming folder to ‘phpmyadmin'.

Make the config folder

Change the permissions

Run the set up in the browser

http://localhost/~username/phpmyadmin/setup/ orhttp://localhost/phpmyadmin/setup/

You need to create a new localhost mysql server connection, click new server.


Switch to the Authentication tab and set the local mysql root user and the password.
Add in the username 'root' (maybe already populated, add in the password that you set up earlier for the MySQL root user set up, click on save and you are returned to the previous screen.
(This is not the OSX Admin or root password – it is the MySQL root user).

Mac


Make sure you click on save, then a config.inc.php is now in the /config directory of phpmyadmin directory, move this file to the root level of /phpmyadmin and then remove the now empty /config directory.

Now going to http://localhost/~username/phpmyadmin/ will now allow you to interact with your MySQL databases.

To upgrade phpmyadmin just download the latest version and copy the older ‘config.inc.php‘ from the existing directory into the new folder and replace – backup the older one just in case.

Permissions

To run a website with no permission issues it is best to set the web root and its contents to be writeable by all, since it's a local development it should'nt be a security issue.

Lamp For Mac Os X

Launch Terminal, (Applications/Utilities), and follow the commands below, first one gets you to the right spot, 2nd one cracks open the text editor on the command line (swap ‘username‘ with your account's shortname, if you don't know your account shortname type ‘whoami' the Terminal prompt):

Then add the content below swapping in your ‘username' in the code below:

Permissions on the file should be:

If not you need to change…

Restart Apache for the new file to be read:

Then this user level document root will be viewable at:

http://localhost/~username/

Override .htaccess

If you are going to use the document root at /Library/WebServer/Documents it is a good idea to allow any .htaccess files used to override the default settings – this can be accomplished by editing the httpd.conf file at line 217 and setting the AllowOverride to All and then restart Apache. This is already taken care of at the Sites level webroot by following the previous step.

PHP

PHP 5.4.17 is loaded in the latest preview of OSX 10.9 Mavericks and needs to be turned on by uncommenting a line in the httpd.conf file.

Use 'control' + 'w' to search within nano and search for ‘php' this will land you on the right line then uncomment the line (remove the #):

Write out and Save using the nano short cut keys at the bottom ‘control o' and ‘control x'

Reload apache to kick in

To see and test PHP, create a file name it 'phpinfo.php' and file it in your document root with the contents below, then view it in a browser.

MySQL

MySQL is again a missing component in OS X 10.9 and needs to be dowloaded from the MySQL site use the Mac OS X ver. 10.7 (x86, 64-bit), DMG Archive version (works fine on 10.9).

When downloading you don't have to sign up, look for » No thanks, just take me to the downloads! – go straight to the download mirrors and download the software from a mirror which is closest to you.

Once downloaded install the 3 components. You may need to adjust the Security and Privacy System Pref to allow installs of 3rd party apps because of the new security feature of Mountain Lion known as the ‘Gatekeeper', which keeps unscrupulous installer packages at bay.

To get around this without changing the global preferences (better!) right click or command click the .pkg installer to bring up the contextual menu and select open, then you get the warning – then click Open.

Install all 3…

The first is the MySQL software, the 2nd item allows MySQL to start when the Mac is booted and the third is a System Preference that allows start/stop operation and a preference to enable it to start on boot.

You can start the MySQL server from the System Preferences or via the command line

To find the MySQL version from the terminal, type at the prompt:

This also puts you in to an interactive dialogue with mySQL, type q to exit.

Install Lamp Mac Os X

After installation, in order to use mysql commands without typing the full path to the commands you need to add the mysql directory to your shell path, (optional step) this is done in your '.bash_profile' file in your home directory, if you don't have that file just create it using vi or nano:

The first command brings you to your home directory and opens the .bash_profile file or creates a new one if it doesn't exist, then add in the line above which adds the mysql binary path to commands that you can run. Exit the file with type 'control + x' and when prompted save the change by typing 'y'. Last thing to do here is to reload the shell for the above to work straight away.

Lamp Stack Mac Os X

You will get the version number again, just type 'q' to exit.

Set the MySQL root password

Note that this is not the same as the root or admin password of OSX – this is a unique password for the mysql root user, use one and remember/jot down somewhere what it is.

Use the single ‘quotes' surrounding the password

Fix the 2002 MySQL Socket error

Fix the looming 2002 socket error – which is linking where MySQL places the socket and where OSX thinks it should be, MySQL puts it in /tmp and OSX looks for it in /var/mysql the socket is a type of file that allows mysql client/server communication.

phpMyAdmin

phpMyAdmin is installed pretty much the same way as before.

Fix the 2002 socket error first if you haven't done so from the MySQL section-

Download phpMyAdmin, the zip package and move the folder with its contents into the document root level renaming folder to ‘phpmyadmin'.

Make the config folder

Change the permissions

Run the set up in the browser

http://localhost/~username/phpmyadmin/setup/ orhttp://localhost/phpmyadmin/setup/

You need to create a new localhost mysql server connection, click new server.


Switch to the Authentication tab and set the local mysql root user and the password.
Add in the username 'root' (maybe already populated, add in the password that you set up earlier for the MySQL root user set up, click on save and you are returned to the previous screen.
(This is not the OSX Admin or root password – it is the MySQL root user).


Make sure you click on save, then a config.inc.php is now in the /config directory of phpmyadmin directory, move this file to the root level of /phpmyadmin and then remove the now empty /config directory.

Now going to http://localhost/~username/phpmyadmin/ will now allow you to interact with your MySQL databases.

To upgrade phpmyadmin just download the latest version and copy the older ‘config.inc.php‘ from the existing directory into the new folder and replace – backup the older one just in case.

Permissions

To run a website with no permission issues it is best to set the web root and its contents to be writeable by all, since it's a local development it should'nt be a security issue.

Lets say that you have a site in the User Sites folder at the following location ~/Sites/testsite you would set it to be writeable like so:

Lamp For Mac Os X 10.13

If you are concerned about security then instead of making it world writeable you can set the owner to be Apache _www but when working on files you would have to authenticate more as admin you are 'not' the owner, you would do this like so:

This will set the contents recursively to be owned by the Apache user.

If you had the website stored at the System level Document root at say /Library/WebServer/Documents/testsite then it would have to be the latter:

So I think it's worth setting up the User level root as there is less authentication!

Lamp For Mac Os X 10.10

That's it! You now have the native AMP stack running ontop of the tamed Mavericks wave.

If you need virtual hosts configured I have added a separate guide on how to set these up in the Apache config files.

Lamp Server Mac Os X

That's it! You now have the native AMP stack running ontop of OSX Mavericks.





broken image