Running Multiple PHP Versions on Windows Server

By admin, May 25, 2017 12:33 am

The trick is to create an extra environment variable PHPRC and point to the specific PHP version directory that contains php.ini.

* DO NOT put an extra \ at the end, ie, C:\Program Files (x86)\PHP 7.1.5 is the correct form without the ending \.

* Make sure you downloaded the Non-Thread Safe x86 version for PHP release

php

Extra Note:

For FastCGI on Windows Server 2003, the last supported binary Non-Thread Safe x86 version of PHP is 5.4.9. (ie, php-5.4.9-nts-Win32-VC9-x86.zip)

Enable the User-Defined INI files

If you want to allow Web application owners to control PHP settings themselves, you can enable a user-defined PHP configuration.

  1. Add the following setting, which specifies the name to be used for user-specific INI files, to the main php.ini file. Setting this to an empty value disables the user-defined PHP configuration.

    console
    user_ini.filename = .user.ini
    
  2. Create a file called .user.ini in C:\inetpub\website1.com\ folder, and add the following:

    console
    max_execution_time = 300
    
  3. Add the following to the file .user.ini in C:\inetpub\website2.com\ folder:

    console
    upload_max_filesize = 12M
    

    Note that if your main php.ini file has [PATH] sections that point to the root folders of these sites, then you need to remove those sections; if you do not remove those sections, the user-defined settings will not take effect.

  4. Use phpinfo() or ini_get(”max_execution_time”) to check that the new settings have overwritten the default settings. Create a PHP file with the following text and save it in the Web root folder:

    XML
    <?php phpinfo(); ?>
    
  5. Open the PHP script on the Web site http://localhost/phpinfo.php.

  6. Note also that when you enable the user-defined INI files, the settings in those files are cached by the PHP engine to avoid re-reading those files for every request. This means that if the user makes a change to .user.ini file, then that change may not take effect right away. Instead it may take effect after the cache time to live (TTL) has expired. The cache TTL value is controlled by the php.ini setting user_ini.cache_ttl, which is set to 300 seconds (5 minutes) by default.

Fore detail, please refer to Enable Per-Site PHP Configuration on IIS 7.

Leave a Reply