Windows Azure Web Sites: File upload limit for PHP sites hosted on WAWS
In my previous post I discussed about .user.ini file and how it is useful in WAWS.
In today’s post I will address the issue of increasing the limit of the file size to a PHP site hosted on WAWS using the .user.ini file.
As mentioned in my previous post, we cannot edit the contents of the php.ini file as it is not permitted in WAWS. However we can add a .user.ini file and override certain settings.
One of the most common scenarios seen for PHP sites hosted on WAWS is to increase the limit of the file size that is permitted. The default setting defined in the PHP runtime (php.ini) is 2 MB. Since we cannot edit the php.ini we need to override this in .user.ini.
There are 2 PHP directive that govern the limit for the File Upload. They are upload_max_filesize & post_max_size. Both have the mode PHP_INI_PERDIR as per List of php.ini directives. The default valie for upload_max_filesize 2 MB and for post_max_size it is 8 MB. Below is a snapshot from PHP’s online documentation (List of php.ini directives).
So we know that we can override this setting in .user.ini file as it is allowed as per PHP documentation. So this is how we do it.
NOTE: If you are using custom PHP runtime as described here, then you have complete control over php.ini and can edit the corresponding sections and ignore this blog post.
Add a sample php page to your WAWS site with the following one line of code:
<?php phpinfo(); ?>
Steps to update the .user.ini file via FTP using FileZilla:
- Go to the Windows Azure Management Portal.
- Click on Web Sites.
- Go to the Site (Running PHP) for which you want to increase the upload file size limit.
- Go to the DASHBOARD page and click on “Download the publish profile”
- Save the file and open it in notepad.exe.
- The file contains 2 <publishProfile> sections, one for Web Deploy and another for FTP.
- You can use either method to add a .user.ini file, in this post I will be using FTP.
- Under the <publishProfile> section for FTP make a not of the following values:
- Launch FileZilla.
- Go to File Menu —>Site Manager.
- Under Site Manager window click on New Site button and give it a descriptive name.
- Under the General tab set the values for the following accordingly
- Host: Paste the hostname from publishUrl obtained from the publishsettings file above.
- Logon Type: set this to Normal.
- User: Paste the userName obtained from the publishsettings file above.
- Password: Paste the userPWD obtained from the publishsettings file above.
Click on Connect to connect to the site over FTP.
Under Remote site: expand ” / ” and then expand the site node.
Click on wwwroot
Right click and select “Create new file”. enter the name of the file as “ .user.ini” (remove quotes).
Right click the .user.ini and select “View/Edit” to edit the file in notepad.
Add these lines to the file:
;Maximum size of the files that can be uploaded ;value of post_max_size must be larger than upload_max_filesize upload_max_filesize = 16M post_max_size = 22M
- Save it and close the file.
- You will receive a prompt notifying the file content has been changed.
- Select the check box “Finish editing and delete local file” and click on Yes.
- Start and stop the website to force the settings to be read immediately.
- Browse the phpinfo page you created earlier.
- search for the upload_max_filesize/post_max_size.
- You will find this under the Core section.
As seen in the above snippet, the upload_max_filesize directive is reading the values from the .user.ini file.
Thus, we have successfully overridden the PHP runtime settings.
HTH. Until then CIAO!