Showing posts with label IIS. Show all posts
Showing posts with label IIS. Show all posts

Friday, July 3, 2015

Install PHP on IIS for Windows Server 2012

1. Download PHP

You can get the PHP binaries from http://windows.php.net/download/.
You will need the VC11 x64 non thread safe version in the ZIP format. (For 64 bit windows ) 
You will need the VC11 x86 non thread safe version in the ZIP format. (For 32 bit windows ) 
Note Non Thread Safe is for IIS and thread safe for Apache
[* Note x64 is for testing.not working well.use 32bit php mean VC11 x86 non thread safe ..so if your server/pc 64 bit no problem to use VC11 x86 non thread safe. ]
2. Unpack PHP
Once you have downloaded PHP, un-zip the package to a location of your choice.
The recommended location is c:\php\ 

3. Install the C++ Runtime

PHP is compiled using the Visual Studio Compiler so we must install the C++ Runtime in order for PHP to work.
If you do not do this step, you will get an Error 500 from the fast-cgi module and PHP will not work.
– Browse to http://windows.php.net/.
– On the left side, select the download link for Visual C++ Redistributable for Visual Studio 2012 (link working at time of posting).
– When the page loads click download, and then select the filename with x86 in it,(FOR 32bit) then click next.
– When the page loads click download, and then select the filename with x64 in it,(For 64bit) then click next.
– Run the installer and follow the on screen instructions..
[* Note in 64 bit c++ not work fine. Install both x86 and x64 C++. ]

4. Install the CGI module in IIS

The CGI module is necessary for PHP to run. By default this isn’t installed so we will need to do this before we can proceed.
Depending on the version of Windows you are running the procedure is slightly different, so you will need to choose from one of the two methods below.

Windows Server 2008 and 2008 R2
– Navigate to Start\Control Panel\All Control Panel Items\Administrative Tools and open Server Manager.
– In the left hand side there is a tree of services, navigate to Roles > Web Server (IIS).
– Scroll down until you see Role Services.
– Select Add Role Services.
– Find Application Delevopment and then CGI and select the tickbox.
CGI role for IIS in Windows Server 2008
– Click Next and then Install
– When it has finished, you may need to restart IIS or the computer. Do this if requested.

5. Installing PHP

We that we have the necessary roles we can now install PHP.

– Load up the IIS Manager by going to Control Panel\All Control Panel Items\Administrative Tools and opening Internet Information Services (IIS) Manager.
– In the folder tree on the left select your server, then select the site you want to add PHP to.
– In the icon view, select Handler Mappings.
– On the right, select Add Module Mapping.
– Fill out the fields as below:

Request Path: *.php
Module: FastCgiModule
Executable: d:\php5\php-cgi.exe     Remember to enter the path you un-zipped PHP to.
Name: php5     You can select any name you wish.

– Now click the button Request Restrictions…
– On the Mapping Tab click the check box and then select File.
Default Index File / Default Document
– Click OK twice and the module is now installed.

6. Adding an index file/default document for PHP

An index file/default document is the file that is first called automatically when you visit a folder. For example visiting www.iisunderground.com will automatically invoke index.php from the root folder. We need to tell IIS what we want to use as this file.

– On the left of the IIS Manager, select the site we are working on again to return to the page of icons.
– From here select Default Document.
– On the right click Add.
– In the box, enter index.php
– Click OK and the index file/default document is now added.

7. Configure php.ini

Before test we need to configure the php.ini file.
Rename php-production  file to php.ini 
Open the ‘php.ini’ file in Notepad and configure it as needed. There are a few changes you will need to make to configure PHP for your IIS 7 system:
  • Uncomment and set the key, cgi.force_redirect = 0
  • Uncomment the key, fastcgi.impersonate = 1
  • Uncomment and set the key, extension_dir to the ‘ext’ folder in the path PHP was extracted to Example :  extension_dir = "C:\php\ext"
  •  if need Set the key, date.timezone to the time zone of your server (the URL on the line above this key lists the accepted values).

8. Testing our installation

To make sure the install has worked, we need to create a test PHP file.
– Create a new file in the folder you have stored your websites files in.
– Name it test.php
– Inside it, put the following code:

<?php phpinfo(); ?>

– Save it and then visit the URL to test.php and you should get something like this:
An example of a PHPInfo page

Important Note

There's a fairly good chance you're missing the correct VC++ runtime for the version of PHP you're running.
If you're running PHP 5.5.x you need to ensure the VC++11 runtime is installed:
Make sure you download and install the x86 version (vcredist_x86.exe), PHP on Windows isn't 64 bit yet.
Check If need to display error
http://www.iis.net/learn/application-frameworks/install-and-configure-php-on-iis/improve-php-error-messages-in-iis-7-and-above



Friday, May 8, 2015

Redirect HTTP to HTTPS automatically IIS /Windows server

Firstly need to install URL Rewrite for IIS. It's very easy using Microsoft Web Platform Installer.
URL Rewrite has a GUI to allow you to enter rules within IIS 7; in the background all this does is edit the web.config file of the site. I will show you how to create a rule both ways.
There are 2 ways we can do this
1.GUI
2.Edit the web.config
We prefer to follow GUI 
In the following example we will redirect HTTP to HTTPs using URL Rewrite. You will need the following items completed in order for this to work correctly.
- SSL Certificate for site installed in IIS.
- Site properly installed and configured for SSL (site set up and binding in IIS configured).
- URL Rewrite 2.0 is installed on the sever.

1st way GUI Version

- Select the website you wish to configure
- In the “Features View” panel, double click URL Rewrite
You will notice there are currently no rules configured for this site. Click “Add Rules…” in the Actions menu to the right of the “Features View” panel
Use the default “Blank rule” and press “OK”.
When editing a rule there are the “Name” field and 4 configuration pull down boxes.
- Enter “Redirect to HTTPS” in the name field.
- Next we will configure the first configuration pull down box called “Match URL”, on the right side of “Match URL” press the down arrow to expand the box.
Within the “Match URL” configuration box we will set the following settings:
Requested URL: Matches the Pattern
Using: Regular Expressions
Pattern: (.*)
We can now edit the next configuration pull down box which is “Conditions”, Press “Add…” to add a new condition to the configuration.
We will configure the condition with the following settings:
Condition Input: {HTTPS}
Check if input string: Matches the Pattern
Pattern: ^OFF$
Press “OK”
You should see your condition in the list of conditions.
For this setting we do not need to configure the “Server Variables” pull down box. Continue onto the “Action” configuration box and pull down the box by selecting the arrow on the right. We will configure the following settings for the “Action” configuration:
Action Type: Redirect
Redirect URLhttps://{HTTP_HOST}/{R:1}
Redirect Type: See Other (303)
Press “Apply” then press “Back to Rules”
You should now see the rule configured on the main screen of the URL Rewrite module.
Test your site, it should now redirect from HTTP to HTTPS.

2nd way Edit web.config file

If we exam the web.config file we can see where the rule was entered. If we entered the rule directly into the web.config file it would show up in the GUI.
Web.Config Rule
You can also edit the web.config file of the site directly and you will be able to see the rule in the GUI. You will need to enter the following within the <system.webServer> </system.webServer> elements.
?
1
2
3
4
5
6
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions><add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
When implementing this solution you need to make sure to use relative paths for all references on your page because there is a possibility you will get a warning asking you if you want to display secure and insecure items. For example, if you have a logo on your page and the URL to this logo is http://domain/images/logo.jpg, do not use the whole path because including the http:// will hard code this image to use http and not https. Instead use /images/logo.jpg.


Total Pageviews