Table of Contents
PHP and Apache on Windows
Install php, apache on windows
prepare environment for installing
prepare environment for running PHP if you only download package which only contain PHP command lines, not PHP package installer. You need to install Visual C++ Redistributable for Visual Studio(one of versions 2010,2012,2013,2015) from https://www.microsoft.com/en-us/download/details.aspx?id=49984
And you must use the same version visuall studio for building PHP and Apache(Because you run PHP as PHP-apache module which is built from PHP):
- vs2008(VC9)
- vs2010(VC10)
- vs2012(VC11)
- vs2013
- vs2015
Basic Steps to install
(PHP 5.6 and Apache 2.4 compiled with VC11)
- Install Visual C++ Redistributable for Visual Studio 2012(VC11) http://www.microsoft.com/en-us/download/details.aspx?id=30679#
- Install PHP package for thread safe (thread safe version contain apache2 module) with extra options
- Install Apache version base on apache2 module which contain in PHP package from http://www.apachelounge.com/download/
apache_2.2.14-win32-x86-no_ssl.msi Network Domain: home-vn.com.vn
- Test apache by go to link http://192.168.1.3/ ⇒ output:
=> It works!
- Change configure of httpd.conf for calling PHP as module
AddType application/x-httpd-php .php DirectoryIndex index.php index.htm index.html PHPIniDir "C:/Program Files/PHP/" LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll"
- Change config of php.ini for loading modules which connecting to MySQL server(must change extension_dir):
extension_dir = "C:\Program Files (x86)\php-5.4.40\ext" [PHP_MYSQLI] extension=php_mysqli.dll [PHP_PDO_MYSQL] extension=php_pdo_mysql.dll
- Create phpinfo.php for checking modules which loaded by PHP:
<?php phpinfo(); ?>
And check by go to http://192.168.1.3/phpinfo.php
- Modify httpd.conf to enable mod rewrite:
LoadModule rewrite_module modules/mod_rewrite.so
Install Apache from binary directory
- Step1: Download Apache binary from http://www.apachelounge.com/download/(Base on OS 64bits or 32bits)
- Step2: Extract download file to drive C on windows. For example:c:\Apache24
- Step3: Change ServerRoot config in httpd.conf If you extract Apache binary to another directory:
ServerRoot "c:/Apache24"
- Step4: Install httpd as an service:
httpd.exe -k install
After install, you can check service name in services.msc and see it. And to uninstall
httpd.exe -k uninstall
- Step5: Run to test httpd:
httpd.exe
Config virtual host on Apache
- Step1: Edit httpd.conf to add new config file for virtual host:
# Virtual hosts Include conf/extra/httpd-vhosts.conf Include conf/vhosts/*.conf
- Step2: create file conf/vhosts/home.conf to include config other virtual hosts
<VirtualHost *:80> DocumentRoot "E:/web/dacsan-opencart" ServerName dacsan.babies.vn DirectoryIndex index.php index.html index.htm <Directory E:/web/dacsan-opencart> Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Allow from all </Directory> SetEnv APPLICATION_ENV development ErrorLog "logs/dacsan-opencart-error.log" CustomLog "logs/dacsan-opencart-access.log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "E:/web/baotam" ServerName baotam.vn DirectoryIndex index.php index.html index.htm <Directory E:/web/baotam> Options Indexes FollowSymLinks MultiViews AllowOverride all Order Deny,Allow Allow from all </Directory> SetEnv APPLICATION_ENV development ErrorLog "logs/baotam-error.log" CustomLog "logs/baotam-access.log" common </VirtualHost>
Some errors and fix
- Error 1:
[authz_core:error] client denied by server configuration
⇒ Fix follow tutorial in link: http://httpd.apache.org/docs/2.4/upgrading.html#access.In this example, to config all requests are allowed:
- 2.2 configuration:
Order allow,deny Allow from all
- 2.4 configuration:
Require all granted
- Error2:Can't load php_curl.dll when config loading it in php.ini(in PHP5.6 64bits on windows 7) ⇒ copy 3 files: libssh2.dll, ssleay32.dll, libeay32.dll to directory c:\windows\system32