PHP 7.2 upgrade


#1

Good evening,

I recently upgraded PHP on my Archlinux webserver from version 7.1 -> 7.2.
With PHP errors displayed, this appears to through a deprecation error for the even() call on line 81 in the MX/Modules.php file. I assume that because this is third party, it will have to be fixed upstream. If so, I just wanted to know if this still functions, and was an acceptable thing to ignore with PHP errors hidden, or if I need to roll back all my sites to using 7.1.

Thanks,

Clayton

A PHP Error was encountered
Severity: 8192

Message: The each() function is deprecated. This message will be suppressed on further calls

Filename: MX/Modules.php

Line Number: 81

Backtrace:

File: /srv/http/invoice.littleendian.tech/application/third_party/MX/Modules.php
Line: 81
Function: each

File: /srv/http/invoice.littleendian.tech/application/third_party/MX/Loader.php
Line: 269
Function: load

File: /srv/http/invoice.littleendian.tech/application/core/Base_Controller.php
Line: 72
Function: module

File: /srv/http/invoice.littleendian.tech/application/core/User_Controller.php
Line: 25
Function: __construct

File: /srv/http/invoice.littleendian.tech/application/core/Admin_Controller.php
Line: 20
Function: __construct

File: /srv/http/invoice.littleendian.tech/index.php
Line: 327
Function: require_once

PHP Error encountered
Upgrade from v1.4.6 to v1.5.9
#2

IP was not tested with PHP 7.2 yet, I mean it’s just out for a few days.
Roll back for now and stay tuned for an update.


Errores en head
#3

@Kovah
Just checking on the status of this issue. I noticed a few updated libraries since then, notably mPDF and PHPMailer.

I’d really like to get my webservers patched current if possible.

Thanks,

Clayton


#4

@xerxies PHP 7.2 compatibility was resolved in version 1.5.7 :blush:


#5

resolved is a big word :smiley:
More seriously the bug was hidden but not fixed (@Kovah you will be slapped for this shame :D)

Feel free to test IP with 7.2 and report any bugs or something which is not working anymore


#6

Oh dear :see_no_evil::see_no_evil:


#7

Sure! not problem 7.1


#8

The PHP developers deprecated mcrypt in version 7.1, and removed support in version 7.2. Applications should use other solutionions like openssl for encryption needs.

If you do decide to install the mcrypt PECL module for PHP 7.2, you’d need to do so using the following commands FOR CPANEL:

yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install libmcrypt
yum install libmcrypt-devel
/opt/cpanel/ea-php72/root/usr/bin/pecl install channel://pecl.php.net/mcrypt-1.0.1


#10

Did we just get spammed above? Moderator?


#11

You can always use the flag underneath the post to report a post. This way all admins and moderators will get a notification.


#12

May I ask kindly for PHP 7.3 Support.
Currently I’m running on PHP v7.2.13 but as all other Webapps are running on PHP 7.3 this would be awesome!
If I can help with logs let me know

#EDIT: I just post the Error after switching to PHP 7.3 here

#### A PHP Error was encountered

Severity: 8192

Message: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior

Filename: MX/Router.php

Line Number: 224

Backtrace:

File: /var/www/vhosts/domain.tld/httpdocs/rechnung/application/third_party/MX/Router.php
Line: 224
Function: strpos

File: /var/www/vhosts/domain.tld/httpdocs/rechnung/application/third_party/MX/Router.php
Line: 71
Function: set_class

File: /var/www/vhosts/domain.tld/httpdocs/rechnung/index.php
Line: 325
Function: require_once

#13

UPDATE:

think I have made it compatible with PHP v7.3.x
But I think this needs a bit of testing.

What I changed:

/application/third_party/MX/Router.php

Row 221-228

public function set_class($class)
    {
        $suffix = $this->config->item('controller_suffix');
        if (strpos($class, $suffix) === false) {
            $class .= $suffix;
        }
        parent::set_class($class);
    }

changed to:

public function set_class($class)
    {
        $suffix = (string) $this->config->item('controller_suffix'); 
        parent::set_class($class);
    }

I think casting $suffix to string is appropriate if controller_suffix is(or can be) empty.
Can someone pls confirm its working?

Just added it here: https://github.com/InvoicePlane/InvoicePlane/pull/680#issuecomment-453630154


The Future of InvoicePlane
InvoicePlane 1.5.9 router.php error
Show error when i running invoiceplane
#14

ah great! Just also found out php 7.3 is not supported yet in Version 1.5.9
Would be great, as this has a great speed performance upgrade against php 7.2


#15

Thanks Martin! I just upgraded my server to v7.3 and came across this article after seeing the Invoice Plane error. I just updated the router.php per your suggestion and the error went away. The site appears to be working correctly without any issues. Thanks for you help!


#16

You are very welcome!
Hope the Dev-Team will include this fix ASAP as it will not break anything in PHP 5.6 and adds support up to PHP 7.3 (and maybe even beyond).

Thanks for your feedback and for using the Forum instead of just opening another Thread with a Issue that already have been solved :wink:


#17

Will make sure this is merged when I get back from working away.