gjb2048 / moodle-theme_essential

The Essential Moodle Theme
https://gjb2048.github.io/moodle-theme_essential/
GNU General Public License v3.0
91 stars 120 forks source link

PHP 7.1 Compatibility Issue #864

Closed michael-milette closed 6 years ago

michael-milette commented 6 years ago

I tried to install Essential 2017102902 on a freshly installed Moodle 3.4.2+ (2017111302.04) today on a local LAMP server - on Windows 10. The theme was the very first thing I installed after completing the Moodle installation. However, instead of displaying a list of fields for me to configure during the installation, I got a message "The connection was reset". I tried this with both the latest versions of Chrome and Firefox on Windows.

After a little troubleshooting, I was able to determined that the problem is that I was running PHP 7.1.9. As soon as I switched to PHP 7.0.24, it all started working perfectly and the options page appeared.

After completing the initial installation, I tried going back to 7.1 but the problem came back immediately. So I switched back to PHP 7.0, activated the theme and tried PHP 7.1 again. Still no joy so it seems that this probably doesn't actually have anything to do with the installation process.

So it seems that the Essential theme is currently be incompatible with PHP 7.1. This is a pretty severe problem as I could no longer access any administrative pages the Moodle website as long as PHP 7.1 was active, regardless of whether Essential was the current active theme or not. You can easily reproduce this issue by attempting to access the Site Administration page with PHP 7.1 active for example. The Home page and Dashboard, Calendar and Private Files pages don't seem to be affected.

Last but not least, I did try activating Developer Debug Mode however it did not produce any information before the connection reset message appears.

Let me know if you have any questions.

Best regards,

Michael Milette

gjb2048 commented 6 years ago

Hi Michael,

Anything in the php.log file to help me please?

Moodle 7.1?

Gareth

michael-milette commented 6 years ago

Sorry about the Moodle 7.1. Obviously I meant PHP 7.1.

So I did a little more digging. Although there were no errors in the PHP log file, I did find something in the Apache log file:

[mpm_winnt:notice] AH00428: Parent: child process xxxx exited with status 3221225725 -- Restarting.

Apparently this problem happens in Windows because Apache’s default stack size is smaller. It often happens when working with php code that allocates a lot of stacks.

The quick fix is to add the following lines to the end of Apache's httpd.conf file:

<IfModule mpm_winnt_module>
    ThreadStackSize 524280
</IfModule>

Why 524280? It is 8 x 65535. To get this number, I just kept increasing it by multiples of 65535 until Apache stopped crashing and restarting every time I tried to load a page while using PHP 7.1.

A few things to consider...

I will try to add more information to this thread if I uncover any.

Best regards,

Michael

gjb2048 commented 6 years ago

FYI:

https://moodle.org/mod/forum/discuss.php?d=311250#p1245893

via https://moodle.org/mod/forum/search.php?id=5&search=ThreadStackSize

michael-milette commented 6 years ago

Thanks for the links! 👍

gjb2048 commented 6 years ago

No problem. Also code is compatible with PHP 7.1 -> https://travis-ci.org/gjb2048/moodle-theme_essential/builds/365687694 so server issue.