Search code examples
phpapachezend-frameworkxamppvirtualhost

how to create virtual host on XAMPP


I am sure this question is being asked many times but I am not encounter with a problem. I am using XAMPP where I configure Zend framework.

XAMPP is running on port 8081 as 80 is being occupied by some Windows process I need to use virtual host for that I configure with following code in C:/xampp/apache/config/extra/httpd-vhosts.config (or C:/xampp/apache/conf/extra/httpd-vhosts.conf in newer releases).

<VirtualHost *:80>
    ServerName comm-app.local
    DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
    SetEnv APPLICATION_ENV "development"
    <Directory "C:/xampp/htdocs/CommunicationApp/public">
        DirectoryIndex index.php
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>    

and also update the hosts file with 127.0.0.1 comm-app.local and try to re-start apache but it is showing error.

15:03:01  [Apache]  Error: Apache shutdown unexpectedly.
15:03:01  [Apache]  This may be due to a blocked port, missing dependencies, 
15:03:01  [Apache]  improper privileges, a crash, or a shutdown by another method.
15:03:01  [Apache]  Press the Logs button to view error logs and check
15:03:01  [Apache]  the Windows Event Viewer for more clues
15:03:01  [Apache]  If you need more help, copy and post this
15:03:01  [Apache]  entire log window on the forums

Solution

  • I see two errors:

    <VirtualHost *:80> -> Fix to :8081, your POrt the server runs on
        ServerName comm-app.local
        DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
        SetEnv APPLICATION_ENV "development"
        <Directory "C:/xampp/htdocs/CommunicationApp/public" -> This is probably why it crashes, missing >
            DirectoryIndex index.php
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
     -> MIssing close container: </VirtualHost> 
    

    Fixed version:

    <VirtualHost *:8081>
        ServerName comm-app.local
        DocumentRoot "C:/xampp/htdocs/CommunicationApp/public"
        SetEnv APPLICATION_ENV "development"
        <Directory "C:/xampp/htdocs/CommunicationApp/public">
            DirectoryIndex index.php
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    

    One thing to mention:

    You can always try and run command:

    service apache2 configtest
    

    This will tell you when you got a malformed configuration and maybe even can tell you where the problem is.

    Furthermore it helps avoid unavailability in a LIVE system:

    service apache2 restart
    

    will shutdown and then fail to start, this configtest you know beforehand "oops I did something wrong, I should fix this first" but the apache itself is still running with old configuration. :)