Yii2 - strpos(): 111 行 PhpMessageSource.php 中的空针

问题描述

请在下面找到我从 apache 错误日志中粘贴的堆栈跟踪。

An Error occurred while handling another error:\nyii\\web\\HeadersAlreadySentException: Headers already sent. in /var/www/html/staging_v2/vendor/yiisoft/yii2/web/Response.PHP:373\nStack trace:\n#0 
/var/www/html/staging_v2/vendor/yiisoft/yii2/web/Response.PHP(346): yii\\web\\Response->sendHeaders()\n#1 
/var/www/html/staging_v2/vendor/yiisoft/yii2/web/ErrorHandler.PHP(136): yii\\web\\Response->send()\n#2 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/ErrorHandler.PHP(135): yii\\web\\ErrorHandler->renderException(Object(yii\\base\\ErrorException))\n#3 
[internal function]: yii\\base\\ErrorHandler->handleException(Object(yii\\base\\ErrorException))\n#4 

{main}\nPrevIoUs exception:\nyii\\base\\ErrorException: strpos(): Empty needle in /var/www/html/staging_v2/vendor/yiisoft/yii2/i18n/PHPMessageSource.PHP:111\nStack trace:\n#0 
[internal function]: yii\\base\\ErrorHandler->handleError(2,'strpos(): Empty...','/var/www/html/s...',111,Array)\n#1 
/var/www/html/staging_v2/vendor/yiisoft/yii2/i18n/PHPMessageSource.PHP(111): strpos('en-US','')\n#2 
/var/www/html/staging_v2/vendor/yiisoft/yii2/i18n/PHPMessageSource.PHP(78): yii\\i18n\\PHPMessageSource->loadFallbackMessages('yii','',NULL,'/var/www/html/s...')\n#3 /var/www/html/staging_v2/vendor/yiisoft/yii2/i18n/MessageSource.PHP(107): yii\\i18n\\PHPMessageSource->loadMessages('yii',NULL)\n#4 
/var/www/html/staging_v2/vendor/yiisoft/yii2/i18n/MessageSource.PHP(87): yii\\i18n\\MessageSource->translateMessage('yii','{attribute} can...',NULL)\n#5 
/var/www/html/staging_v2/vendor/yiisoft/yii2/i18n/I18N.PHP(90): yii\\i18n\\MessageSource->translate('yii',NULL)\n#6 
/var/www/html/staging_v2/vendor/yiisoft/yii2/BaseYii.PHP(538): yii\\i18n\\I18N->translate('yii',Array,NULL)\n#7 
/var/www/html/staging_v2/vendor/yiisoft/yii2/validators/requiredValidator.PHP(62): yii\\BaseYii::t('yii','{attribute} can...')\n#8 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/BaSEObject.PHP(109): yii\\validators\\requiredValidator->init()\n#9 
[internal function]: yii\\base\\BaSEObject->__construct(Array)\n#10 
/var/www/html/staging_v2/vendor/yiisoft/yii2/di/Container.PHP(420): ReflectionClass->newInstanceArgs(Array)\n#11 
/var/www/html/staging_v2/vendor/yiisoft/yii2/di/Container.PHP(171): yii\\di\\Container->build('yii\\\\validators\\\\...',Array)\n#12 
/var/www/html/staging_v2/vendor/yiisoft/yii2/BaseYii.PHP(365): yii\\di\\Container->get('yii\\\\validators\\\\...',Array)\n#13 
/var/www/html/staging_v2/vendor/yiisoft/yii2/validators/Validator.PHP(231): yii\\BaseYii::createObject(Array)\n#14 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Model.PHP(469): yii\\validators\\Validator::createValidator('yii\\\\validators\\\\...',Object(frontend\\models\\ContactForm),Array)\n#15 /var/www/html/staging_v2/vendor/yiisoft/yii2/base/Model.PHP(421): yii\\base\\Model->createValidators()\n#16 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Model.PHP(190): yii\\base\\Model->getValidators()\n#17 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Model.PHP(817): yii\\base\\Model->scenarios()\n#18 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Model.PHP(435): yii\\base\\Model->activeAttributes()\n#19 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Model.PHP(495): yii\\base\\Model->getActiveValidators('name')\n#20 
/var/www/html/staging_v2/vendor/yiisoft/yii2/widgets/ActiveField.PHP(929): yii\\base\\Model->isAttributerequired('name')\n#21 
/var/www/html/staging_v2/vendor/yiisoft/yii2/widgets/ActiveField.PHP(405): yii\\widgets\\ActiveField->addAriaAttributes(Array)\n#22 
/var/www/html/staging_v2/frontend/views/site/index.PHP(143): yii\\widgets\\ActiveField->textInput(Array)\n#23 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/View.PHP(348): require('/var/www/html/s...')\n#24 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/View.PHP(257): yii\\base\\View->renderPHPFile('/var/www/html/s...',Array)\n#25 
/var/www/html/staging_v2/vendor/yiisoft/yii2/web/View.PHP(213): yii\\base\\View->renderFile('/var/www/html/s...',Object(frontend\\controllers\\SiteController))\n#26 /var/www/html/staging_v2/vendor/yiisoft/yii2/web/Controller.PHP(53): yii\\web\\View->renderAjax('index',Object(frontend\\controllers\\SiteController))\n#27 /var/www/html/staging_v2/frontend/controllers/SiteController.PHP(555): yii\\web\\Controller->renderAjax('index',Array)\n#28 
[internal function]: frontend\\controllers\\SiteController->actionIndex()\n#29 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/InlineAction.PHP(57): call_user_func_array(Array,Array)\n#30 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Controller.PHP(181): yii\\base\\InlineAction->runWithParams(Array)\n#31 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Module.PHP(534): yii\\base\\Controller->runAction('index',Array)\n#32 
/var/www/html/staging_v2/vendor/yiisoft/yii2/web/Application.PHP(104): yii\\base\\Module->runAction('site/index',Array)\n#33 
/var/www/html/staging_v2/vendor/yiisoft/yii2/base/Application.PHP(392): yii\\web\\Application->handleRequest(Object(yii\\web\\Request))\n#34 
/var/www/html/staging_v2/frontend/web/index.PHP(0): yii\\base\\Application->run()\n#35 

您可以在此处找到问题:https://staging-v2.storna.app 管理门户有效 https://staging-v2.storna.app/admin API 也有效

只有着陆页有问题.. 之前工作正常。

可能是什么问题?

日志中只有 2 个问题。其中 1 个是警告,另一个PHP7 通知。所以我怀疑是因为这个。

解决方法

您似乎在使用 2.0.40 版本,这已被报告为 here。似乎问题只存在于 PHP 版本 7.1 - 7.4 上,因为 PHP 8.0 似乎通过成功,原因是

看起来以前的版本可以适应 language 设置为 null

您可以将 minimum-stability 中的 composer.json 设置从 stable 更改为 dev,然后运行 ​​composer update 将您的 yii 框架更新为 dev-master .

或者您可以仅从此commit

手动更新这些文件

我会使用第二个选项,因为第一个选项也会更新所有包。