skip to Main Content

I’m running into a strange issue when uploading large files via PHP (through Drupal, though that’s not the issue).

Basically, my file uploads fail due to post_max_size limits being reached, even though the local directive is set to 96M, and the file is 25M.

I’ve ensured everything else is correct, including max_input_time, max_upload_filesize, and the IIS FastCGI idle time. All these are plenty large and not the issue.

I am overriding the post_max_size directive through Plesk, which (I believe) stores the change in a registry value. Running phpinfo() on the domain shows the correct local and master values for all directives…96M local, 12M master.

The very strange thing is that when I change the master post_max_size in php.ini from 12M to 96M (and ensure the change has taken effect), it works normally! Changing the master value back to 12M (and keeping a local value of 96M) immediately causes uploads to fail again.

Is this a bug in PHP, or am I doing it wrong?

3

Answers


  1. Chosen as BEST ANSWER

    As it turns out, on Windows, you can only set ini directives that are marked PHP_INI_USER per directory. Unfortunately, upload_max_filesize and post_max_size are both PHP_INI_PERDIR. From the PHP docs at http://php.net/manual/en/configuration.changes.php

    The settings for the directory would be active for any script running from this directory or any subdirectory of it. The values under the key should have the name of the PHP configuration directive and the string value. PHP constants in the values are not parsed. However, only configuration values changeable in PHP_INI_USER can be set this way, PHP_INI_PERDIR values can not.

    So even though Plesk has an interface to change those directives, and even though phpinfo() picks up on them, they do nothing to change the actual max upload sizes. Plesk should not allow you to change those on Windows, and phpinfo() should not report the change, but what can you do.


  2. Check PHP’s post_max_size and upload_max_filesize in php.ini and for any overrides (local php.ini or .htaccess for example)

    EDIT: it should be noted that phpinfo() cannot be relied upon for determining if any override will be available during the request (aka when file uploads happen) since it will be processed during the response.

    Login or Signup to reply.
  3. I had similar issues in Plesk. Have you edited any of the templates in Plesk? I know when it runs its cron jobs you can lose certain config edits if you didn’t do them via Plesk.

    But what about your .htaccess file? You can also set these limits there and that, based on your Plesk config, may the better place to make these changes.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search