Yii 1.1.21 and PHP 7.2.19 issues


(Forum) #1

Hi,

It’s been a few days since we upgraded our servers to PHP 7.2.19 and we’re using a application written in Yii 1.1. The latest version of Yii 1.1.21 is used, but it’s been a couple of times when we get a fatal error (memory exhaustion) after the upgrade to 7.2.19 when running the application. Unfortunately, the problem is not easy to reproduce, so we blame the issue to be the combination of PHP 7.2.19 and Yii 1.1.21.

Has anyone else experiencing the same issue with Yii and PHP 7.2.19? Any insight will be helpful!

Thanks!


#2

could you share more details about the error? do you have a stacktrace?


(Forum) #3

My development setup is Windows 10 64-bit with Apache 2.4.39 and PHP 7.2.19 (all 64-bit) set-up as FPM. The application worked perfectly with the previous PHP version, but after upgrading, I experienced once a memory exhaustion error. No stack trace was possible, since, I had to kill all php-cgi.exe processes. After that, I didn’t experience again the issue.

Today, my colleague upgraded his own PHP version to 7.2.19 (same set-up as mine) and experienced the issue many times (memory exhaustion). He later called me and he said that the problem is the combination of PHP 7.2.19 with Yii 1.1.21. We have yet to further look into the issue.


#4

what exactly do you mean with “memory exhaustion error”? Killing php should not be necessary when you hit the php memory_limit. If the php process itself runs out of control the issue is likely a problem in PHP itself and not yii.

To get more information about the error I recommend to enable php error log so php will write errors into a file. also check apache error logs if there is something useful.


(Forum) #5

I had to kill the processes, because the parent process (httpd.exe) would not kill them.

Unfortunately, I deleted the error log, because it grew to several hundred megabytes after this incident.

Tomorrow, both my colleague and I will look further into the issue and report back.


(Forum) #6

This is a PHP issue. Several issues are reported that complain about excessive memory usage (see https://bugs.php.net/bug.php?id=78147 or https://bugs.php.net/bug.php?id=78106). I reproduced the issue in my development PC and here’s a screenshot:

and a portion of the PHP error log:

[12-Jun-2019 08:28:09 Europe/Athens] PHP Fatal error:  Class 'Controller' not found in ..............\protected\controllers\ErrorController.php on line 6
[12-Jun-2019 08:28:09 Europe/Athens] PHP Stack trace:
[12-Jun-2019 08:28:09 Europe/Athens] PHP   1. {main}() ..............\index.php:0
[12-Jun-2019 08:28:09 Europe/Athens] PHP   2. CWebApplication->run() ..............\index.php:13
[12-Jun-2019 08:28:09 Europe/Athens] PHP   3. CWebApplication->processRequest() ..............\yii\framework\base\CApplication.php:185
[12-Jun-2019 08:28:09 Europe/Athens] PHP   4. CWebApplication->runController($route = 'report/ajxRedrawChart') ..............\yii\framework\web\CWebApplication.php:141
[12-Jun-2019 08:28:09 Europe/Athens] PHP   5. CWebApplication->createController($route = 'report/ajxRedrawChart', $owner = *uninitialized*) ..............\yii\framework\web\CWebApplication.php:276
[12-Jun-2019 08:28:09 Europe/Athens] PHP   6. require() ..............\yii\framework\web\CWebApplication.php:354
[12-Jun-2019 08:28:09 Europe/Athens] PHP   7. spl_autoload_call('Controller') ..............\protected\controllers\ReportController.php:6
[12-Jun-2019 08:28:09 Europe/Athens] PHP   8. YiiBase::autoload($className = 'Controller', $classMapOnly = *uninitialized*) ..............\protected\controllers\ReportController.php:6
[12-Jun-2019 08:28:09 Europe/Athens] PHP   9. CWebApplication->handleError($code = 2, $message = 'include(Controller.php): failed to open stream: No such file or directory', $file = '..............yii\\framework\\YiiBase.php', $line = 463, array ('className' => 'Controller', 'classMapOnly' => FALSE)) ..............\yii\framework\YiiBase.php:463
[12-Jun-2019 08:28:09 Europe/Athens] PHP  10. CErrorHandler->handle($event = class CErrorEvent { public $code = 2; public $message = 'include(Controller.php): failed to open stream: No such file or directory'; public $file = '..............yii\\framework\\YiiBase.php'; public $line = 463; public $sender = class CWebApplication { public $defaultController = 'report'; public $layout = 'main'; public $controllerMap = array (); public $catchAllRequest = NULL; public $controllerNamespace = NULL; private $_controllerPath = '..............frontend\\euroekloges\\protected\\controllers'; private $_viewPath = NULL; private $_systemViewPath = NULL; private $_layoutPath = NULL; private $_controller = NULL; private $_theme = NULL; public $name = 'Μηχανογράφηση εκλογών'; public $charset = 'UTF-8'; public $sourceLanguage = 'en_us'; public $localeClass = 'CLocale'; private ${CApplication}_id = NULL; private ${CApplication}_basePath = '..............frontend\\euroekloges\\protected'; private ${CApplication}_runtimePath = '..............frontend\\euroekloges\\protected\\runtime'; private ${CApplication}_extensionPath = NULL; private ${CApplication}_globalState = NULL; private ${CApplication}_stateChanged = NULL; private ${CApplication}_ended = FALSE; private ${CApplication}_language = 'el'; private ${CApplication}_homeUrl = NULL; public $preload = array (0 => 'log'); public $behaviors = array (); private ${CModule}_parentModule = NULL; private ${CModule}_modulePath = NULL; private ${CModule}_params = class CAttributeCollection { public $caseSensitive = TRUE; private ${CMap}_d = array ('defaultPageSize' => 20, 'JS_extension' => '.js', 'CSS_extension' => '.css', 'encrypt_url' => FALSE, 'id_diexagogiEklogon' => 15, 'id_eklogikhDiadikasia' => 13, 'id_diexagogiEklogon_OLD' => 4, 'hasComparision' => TRUE, 'exportZip' => '20190526_euro_export.zip', 'fn_chart_ch_exp' => 'EU20190526', 'fn_comp_ch_exp' => 'EU_20190526_COMPARISON', 'fn_report_ch_exp' => 'EU_20190526', 'fn_synmap_ch_exp' => 'EU_20190526_PARTY', 'preventArgs' => FALSE, 'preventOneArg' => array ('layout' => 1, 'fullscreen' => 0, 'map' => 0, 'mlevel' => 1, 'onemap' => 0, 'mtip' => 0, 'chart' => 0, 'ctype' => 0, 'marquee' => 0, 'rss' => 0, 'select' => 0, 'toolbar' => 0, 'tooltip' => 0, 'results' => 0, 'refresh' => 0, 'every' => 0, 'rvis' => 0, 'view' => 0), 'hasLayout' => TRUE, 'isFullScreen' => FALSE, 'isMobileVer' => FALSE, 'hasMap' => TRUE, 'mapLevel' => 2, 'mapScale' => 1, 'mapUnited' => FALSE, 'mapTip' => TRUE, 'mapTipCount' => 5, 'hasChart' => TRUE, 'chartShowImages' => FALSE, 'chartShowAKYRA' => FALSE, 'chartShowLEYKA' => FALSE, 'chartShowZerowPS' => FALSE, 'chartGradientColor' => FALSE, 'chartStartType' => 'column', 'hasExportChart' => TRUE, 'hasPrintChart' => TRUE, 'hasRss' => FALSE, 'limitRSS' => 50, 'viewLast' => FALSE, 'viewLastLimit' => 15, 'hasMarquee' => FALSE, 'limitMarquee' => 3, 'speedMarquee' => 2, 'hasAutoRefresh' => FALSE, 'initRefreshEvery' => 120, 'AutoRefreshIsVisible' => TRUE, 'hasSelect' => TRUE, 'hasToolBar' => TRUE, 'hasToolTip' => TRUE, 'hasResults' => TRUE, 'hasETStatus' => TRUE, 'showWidgets' => TRUE, 'importantMessage' => '', 'showResults' => TRUE, 'cacheAge' => 10, 'showResPage' => array (0 => TRUE, 1 => TRUE, 2 => TRUE, 3 => TRUE, 4 => TRUE, 5 => TRUE, 6 => TRUE, 7 => TRUE, 8 => TRUE), 'candicatesByEP' => array (0 => TRUE, 100000 => FALSE, 1 => TRUE, 2 => TRUE, 3 => TRUE, 4 => TRUE, 5 => TRUE, 6 => TRUE, 7 => TRUE, 8 => TRUE), 'candicatesWithList' => TRUE, 'viewCandResults' => array (0 => TRUE, 100000 => FALSE, 1 => TRUE, 2 => TRUE, 3 => TRUE, 4 => TRUE, 5 => TRUE, 6 => TRUE, 7 => TRUE, 8 => TRUE)); private ${CMap}_r = FALSE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }; private ${CModule}_modules = array (); private ${CModule}_moduleConfig = array (); private ${CModule}_components = array ('log' => class CLogRouter { private $_routes = array (0 => class CFileLogRoute { ... }); public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }, 'request' => class CHttpRequest { public $jsonAsArray = TRUE; public $enableCookieValidation = FALSE; public $enableCsrfValidation = FALSE; public $csrfTokenName = 'YII_CSRF_TOKEN'; public $csrfCookie = NULL; private $_requestUri = NULL; private $_pathInfo = NULL; private $_scriptFile = NULL; private $_scriptUrl = NULL; private $_hostInfo = NULL; private $_baseUrl = NULL; private $_cookies = NULL; private $_preferredAcceptTypes = NULL; private $_preferredLanguages = NULL; private $_csrfToken = NULL; private $_restParams = NULL; private $_httpVersion = '1.1'; private $_port = NULL; private $_securePort = NULL; public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }, 'urlManager' => class CUrlManager { public $rules = array (); public $urlSuffix = ''; public $showScriptName = TRUE; public $appendParams = TRUE; public $routeVar = 'r'; public $caseSensitive = TRUE; public $matchValue = FALSE; public $cacheID = 'cache'; public $useStrictParsing = FALSE; public $urlRuleClass = 'CUrlRule'; private $_urlFormat = 'get'; private $_rules = array (); private $_baseUrl = NULL; public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }, 'errorHandler' => class CErrorHandler { public $maxSourceLines = 25; public $maxTraceSourceLines = 10; public $adminInfo = 'the webmaster'; public $discardOutput = TRUE; public $errorAction = 'error/error'; private $_error = array ('code' => 500, 'type' => 'PHP warning', 'message' => 'include(Controller.php): failed to open stream: No such file or directory', 'file' => '..............yii\\framework\\YiiBase.php', 'line' => 463, 'trace' => '#import ..............yii\\framework\\YiiBase.php(463): include()\n#import unknown(import): autoload()\n#import ..............frontend\\euroekloges\\protected\\controllers\\ReportController.php(import): spl_autoload_call()\n#import ..............yii\\framework\\web\\CWebApplication.php(354): require()\n#import ..............yii\\framework\\web\\CWebApplication.php(276): CWebApplication->createController()\n#import ..............yii\\framework\\web\\CWebApplication.php(141): CWebApplication->runController()\n#import ..............yii\\framework\\base\\CApplication.php(185): CWebApplication->processRequest()\n#import ..............frontend\\euroekloges\\index.php(13): CWebApplication->run()\n', 'traces' => array (...)); private $_exception = NULL; public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }); private ${CModule}_componentConfig = array ('coreMessages' => array ('class' => 'CPhpMessageSource', 'language' => 'en_us', 'basePath' => '..............yii\\framework\\messages'), 'db' => array ('class' => 'CDbConnection', 'connectionString' => 'mysql:host=10.64.94.100;dbname=vouleutikes', 'username' => 'euroekloges', 'password' => 'D66azIjoz3XE', 'emulatePrepare' => TRUE, 'charset' => 'utf8', 'enableParamLogging' => TRUE, 'enableProfiling' => TRUE), 'messages' => array ('class' => 'CPhpMessageSource'), 'errorHandler' => array ('class' => 'CErrorHandler', 'errorAction' => 'error/error'), 'securityManager' => array ('class' => 'CSecurityManager'), 'statePersister' => array ('class' => 'CStatePersister'), 'urlManager' => array ('class' => 'CUrlManager'), 'request' => array ('class' => 'CHttpRequest'), 'format' => array ('class' => 'CFormatter'), 'session' => array ('class' => 'CHttpSession', 'autoStart' => FALSE, 'cookieMode' => 'none'), 'assetManager' => array ('class' => 'CAssetManager'), 'user' => array ('class' => 'CWebUser'), 'themeManager' => array ('class' => 'CThemeManager'), 'authManager' => array ('class' => 'CPhpAuthManager'), 'clientScript' => array ('class' => 'CClientScript'), 'widgetFactory' => array ('class' => 'CWidgetFactory'), 'log' => array ('class' => 'CLogRouter', 'routes' => array (0 => array (...)))); private ${CComponent}_e = array ('onendrequest' => class CList { private $_d = array (0 => array (...)); private $_c = 1; private $_r = FALSE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }); private ${CComponent}_m = NULL; private ${CModule}_id = NULL; private ${CModule}_basePath = NULL }; public $handled = TRUE; public $params = NULL; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }) ..............\yii\framework\base\CApplication.php:834
[12-Jun-2019 08:28:09 Europe/Athens] PHP  11. CErrorHandler->handleError($event = class CErrorEvent { public $code = 2; public $message = 'include(Controller.php): failed to open stream: No such file or directory'; public $file = '..............yii\\framework\\YiiBase.php'; public $line = 463; public $sender = class CWebApplication { public $defaultController = 'report'; public $layout = 'main'; public $controllerMap = array (); public $catchAllRequest = NULL; public $controllerNamespace = NULL; private $_controllerPath = '..............frontend\\euroekloges\\protected\\controllers'; private $_viewPath = NULL; private $_systemViewPath = NULL; private $_layoutPath = NULL; private $_controller = NULL; private $_theme = NULL; public $name = 'Μηχανογράφηση εκλογών'; public $charset = 'UTF-8'; public $sourceLanguage = 'en_us'; public $localeClass = 'CLocale'; private ${CApplication}_id = NULL; private ${CApplication}_basePath = '..............frontend\\euroekloges\\protected'; private ${CApplication}_runtimePath = '..............frontend\\euroekloges\\protected\\runtime'; private ${CApplication}_extensionPath = NULL; private ${CApplication}_globalState = NULL; private ${CApplication}_stateChanged = NULL; private ${CApplication}_ended = FALSE; private ${CApplication}_language = 'el'; private ${CApplication}_homeUrl = NULL; public $preload = array (0 => 'log'); public $behaviors = array (); private ${CModule}_parentModule = NULL; private ${CModule}_modulePath = NULL; private ${CModule}_params = class CAttributeCollection { public $caseSensitive = TRUE; private ${CMap}_d = array ('defaultPageSize' => 20, 'JS_extension' => '.js', 'CSS_extension' => '.css', 'encrypt_url' => FALSE, 'id_diexagogiEklogon' => 15, 'id_eklogikhDiadikasia' => 13, 'id_diexagogiEklogon_OLD' => 4, 'hasComparision' => TRUE, 'exportZip' => '20190526_euro_export.zip', 'fn_chart_ch_exp' => 'EU20190526', 'fn_comp_ch_exp' => 'EU_20190526_COMPARISON', 'fn_report_ch_exp' => 'EU_20190526', 'fn_synmap_ch_exp' => 'EU_20190526_PARTY', 'preventArgs' => FALSE, 'preventOneArg' => array ('layout' => 1, 'fullscreen' => 0, 'map' => 0, 'mlevel' => 1, 'onemap' => 0, 'mtip' => 0, 'chart' => 0, 'ctype' => 0, 'marquee' => 0, 'rss' => 0, 'select' => 0, 'toolbar' => 0, 'tooltip' => 0, 'results' => 0, 'refresh' => 0, 'every' => 0, 'rvis' => 0, 'view' => 0), 'hasLayout' => TRUE, 'isFullScreen' => FALSE, 'isMobileVer' => FALSE, 'hasMap' => TRUE, 'mapLevel' => 2, 'mapScale' => 1, 'mapUnited' => FALSE, 'mapTip' => TRUE, 'mapTipCount' => 5, 'hasChart' => TRUE, 'chartShowImages' => FALSE, 'chartShowAKYRA' => FALSE, 'chartShowLEYKA' => FALSE, 'chartShowZerowPS' => FALSE, 'chartGradientColor' => FALSE, 'chartStartType' => 'column', 'hasExportChart' => TRUE, 'hasPrintChart' => TRUE, 'hasRss' => FALSE, 'limitRSS' => 50, 'viewLast' => FALSE, 'viewLastLimit' => 15, 'hasMarquee' => FALSE, 'limitMarquee' => 3, 'speedMarquee' => 2, 'hasAutoRefresh' => FALSE, 'initRefreshEvery' => 120, 'AutoRefreshIsVisible' => TRUE, 'hasSelect' => TRUE, 'hasToolBar' => TRUE, 'hasToolTip' => TRUE, 'hasResults' => TRUE, 'hasETStatus' => TRUE, 'showWidgets' => TRUE, 'importantMessage' => '', 'showResults' => TRUE, 'cacheAge' => 10, 'showResPage' => array (0 => TRUE, 1 => TRUE, 2 => TRUE, 3 => TRUE, 4 => TRUE, 5 => TRUE, 6 => TRUE, 7 => TRUE, 8 => TRUE), 'candicatesByEP' => array (0 => TRUE, 100000 => FALSE, 1 => TRUE, 2 => TRUE, 3 => TRUE, 4 => TRUE, 5 => TRUE, 6 => TRUE, 7 => TRUE, 8 => TRUE), 'candicatesWithList' => TRUE, 'viewCandResults' => array (0 => TRUE, 100000 => FALSE, 1 => TRUE, 2 => TRUE, 3 => TRUE, 4 => TRUE, 5 => TRUE, 6 => TRUE, 7 => TRUE, 8 => TRUE)); private ${CMap}_r = FALSE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }; private ${CModule}_modules = array (); private ${CModule}_moduleConfig = array (); private ${CModule}_components = array ('log' => class CLogRouter { private $_routes = array (0 => class CFileLogRoute { ... }); public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }, 'request' => class CHttpRequest { public $jsonAsArray = TRUE; public $enableCookieValidation = FALSE; public $enableCsrfValidation = FALSE; public $csrfTokenName = 'YII_CSRF_TOKEN'; public $csrfCookie = NULL; private $_requestUri = NULL; private $_pathInfo = NULL; private $_scriptFile = NULL; private $_scriptUrl = NULL; private $_hostInfo = NULL; private $_baseUrl = NULL; private $_cookies = NULL; private $_preferredAcceptTypes = NULL; private $_preferredLanguages = NULL; private $_csrfToken = NULL; private $_restParams = NULL; private $_httpVersion = '1.1'; private $_port = NULL; private $_securePort = NULL; public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }, 'urlManager' => class CUrlManager { public $rules = array (); public $urlSuffix = ''; public $showScriptName = TRUE; public $appendParams = TRUE; public $routeVar = 'r'; public $caseSensitive = TRUE; public $matchValue = FALSE; public $cacheID = 'cache'; public $useStrictParsing = FALSE; public $urlRuleClass = 'CUrlRule'; private $_urlFormat = 'get'; private $_rules = array (); private $_baseUrl = NULL; public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }, 'errorHandler' => class CErrorHandler { public $maxSourceLines = 25; public $maxTraceSourceLines = 10; public $adminInfo = 'the webmaster'; public $discardOutput = TRUE; public $errorAction = 'error/error'; private $_error = array ('code' => 500, 'type' => 'PHP warning', 'message' => 'include(Controller.php): failed to open stream: No such file or directory', 'file' => '..............yii\\framework\\YiiBase.php', 'line' => 463, 'trace' => '#import ..............yii\\framework\\YiiBase.php(463): include()\n#import unknown(import): autoload()\n#import ..............frontend\\euroekloges\\protected\\controllers\\ReportController.php(import): spl_autoload_call()\n#import ..............yii\\framework\\web\\CWebApplication.php(354): require()\n#import ..............yii\\framework\\web\\CWebApplication.php(276): CWebApplication->createController()\n#import ..............yii\\framework\\web\\CWebApplication.php(141): CWebApplication->runController()\n#import ..............yii\\framework\\base\\CApplication.php(185): CWebApplication->processRequest()\n#import ..............frontend\\euroekloges\\index.php(13): CWebApplication->run()\n', 'traces' => array (...)); private $_exception = NULL; public $behaviors = array (); private ${CApplicationComponent}_initialized = TRUE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }); private ${CModule}_componentConfig = array ('coreMessages' => array ('class' => 'CPhpMessageSource', 'language' => 'en_us', 'basePath' => '..............yii\\framework\\messages'), 'db' => array ('class' => 'CDbConnection', 'connectionString' => 'mysql:host=10.64.94.100;dbname=vouleutikes', 'username' => 'euroekloges', 'password' => 'D66azIjoz3XE', 'emulatePrepare' => TRUE, 'charset' => 'utf8', 'enableParamLogging' => TRUE, 'enableProfiling' => TRUE), 'messages' => array ('class' => 'CPhpMessageSource'), 'errorHandler' => array ('class' => 'CErrorHandler', 'errorAction' => 'error/error'), 'securityManager' => array ('class' => 'CSecurityManager'), 'statePersister' => array ('class' => 'CStatePersister'), 'urlManager' => array ('class' => 'CUrlManager'), 'request' => array ('class' => 'CHttpRequest'), 'format' => array ('class' => 'CFormatter'), 'session' => array ('class' => 'CHttpSession', 'autoStart' => FALSE, 'cookieMode' => 'none'), 'assetManager' => array ('class' => 'CAssetManager'), 'user' => array ('class' => 'CWebUser'), 'themeManager' => array ('class' => 'CThemeManager'), 'authManager' => array ('class' => 'CPhpAuthManager'), 'clientScript' => array ('class' => 'CClientScript'), 'widgetFactory' => array ('class' => 'CWidgetFactory'), 'log' => array ('class' => 'CLogRouter', 'routes' => array (0 => array (...)))); private ${CComponent}_e = array ('onendrequest' => class CList { private $_d = array (0 => array (...)); private $_c = 1; private $_r = FALSE; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }); private ${CComponent}_m = NULL; private ${CModule}_id = NULL; private ${CModule}_basePath = NULL }; public $handled = TRUE; public $params = NULL; private ${CComponent}_e = NULL; private ${CComponent}_m = NULL }) ..............\yii\framework\base\CErrorHandler.php:133
[12-Jun-2019 08:28:09 Europe/Athens] PHP  12. CErrorHandler->renderError() ..............\yii\framework\base\CErrorHandler.php:296
[12-Jun-2019 08:28:09 Europe/Athens] PHP  13. CWebApplication->runController($route = 'error/error') ..............\yii\framework\base\CErrorHandler.php:368
[12-Jun-2019 08:28:09 Europe/Athens] PHP  14. CWebApplication->createController($route = 'error/error', $owner = *uninitialized*) ..............\yii\framework\web\CWebApplication.php:276
[12-Jun-2019 08:28:09 Europe/Athens] PHP  15. require() ..............\yii\framework\web\CWebApplication.php:354

I have removed some hardcoded paths…

So, the current solution at the moment is to downgrade the PHP version.


(St4nny) #7

In your error log the fatal error Is: class Controller not found, so or you put the Controller.php in components folder (normally it’s there) or fix ErrorController to extends CController.
For Memory usage you Need to confront php.ini of php5 and 7 and check of the Memory limit Is the same.


(Forum) #8

This is not a Yii issue, but a PHP one. The application worked perfectly with PHP 7.2.18 and the issues appeared after the upgrade to 7.2.19. Look at the two links to bugs.php.net I posted above and you’ll understand the issue is inside PHP.


(Henry Lamorski) #9

commonly, this is caused by not implementing the correct method signature. Please check if your methods are implemented with the correct signature:

e.g.:

// wrong
public function beforeAction() {}

// correct
public function beforeAction($action) {}

(Forum) #10

As I wrote in my previous message, the same code worked flawlessly with all PHP versions before 7.2.19. This specific version (7.2.19) is at fault and not the application itself.


(Henry Lamorski) #11

nope, my answer was tested and confirmed with:

henry@h1:~$ php -v
PHP 7.2.19-0ubuntu0.18.04.1 (cli) (built: Jun  4 2019 14:48:12) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.19-0ubuntu0.18.04.1, Copyright (c) 1999-2018, by Zend Technologies

(Forum) #12

How is it possible that the application works fine with previous versions and it breaks with PHP 7.2.19? If I implemented wrong method signatures, wouldn’t it fail with 7.2.18 too?

It appears though that the specific problem is related to Opcache and it probably affects only Windows systems. I have yet to find any issue with my Ubuntu installation with PHP 7.2.19. The screenshots that I uploaded above are from my Windows 10 development PC.


(Henry Lamorski) #13

i suggest du test it by your self:
please create a tiny test App, create your own Controller by extending CController. It should run fine. Then, implement “beforeAction()” with correct/incorrect signature.


(Forum) #14

I’m sorry, but I fail to understand why you insist on doing such a test. My initial problem is that my application broke after upgrading my local installation from PHP 7.2.18 to 7.2.19. And it broke because of fatal errors in the PHP core, which have nothing to do with the source code of the application itself. The application code did not change between the upgrade from 7.2.18 to 7.2.19. If you look at the two bugs I mentioned abobe, you will see same behaviour as me, so this is a PHP issue and not an application (or Yii) one.


(Иван) #15

That code worked in a previous PHP version does not automatically mean the code is actually correct.