我遇到了一个看起来很小的问题,但我无法解决它。这可能很愚蠢,但我找不到任何解决方案。
我正在开发PC上使用PHP 7.1的Symfony 3应用程序。一切都很好。我尝试将其上传到使用PHP 7.0的主机服务器上。
启动网站时,我会收到此错误消息:
致命错误:unturect typeError:学说的返回值 common common notation entotationRegistry :: domgindloader()必须是学说 common common common notiation not void的实例,没有一个返回/home/home/thome/flb3f5a508aeeeb6d39e6d39e6d7e6e6d7e1e1e1e1e47bdaa vendration in home/thome clocy/clocy cloti/andotations/lib/doctrine/common/annotations/annotationRegistry.php:117 stack跟踪:#0/home/clients/fb3f5a508aeeb6d39e6d7e6e1e47bda9ac/app/app/autoload.phpppt:#1/home/client/fb3f5a508aeeb6d39e6d7e1e47bda9ac/web/app.php(6):require('/home/home/clients/clister/f ...')#2 {main}注释/lib/doctrine/common/common/entotation/entotationRegistry.php在第117行
上
我发现这些链接似乎非常有帮助: - 符号致命错误 -http://www.doctrine-project.org/2017/07/25/php-7.1-requirement-and-composer.html
但是,我无法解决问题。我找不到我需要与PHP 7.0兼容的版本...
在我的作曲家JSON配置文件中,我有:
"platform": {
"php": "7.0"
},
"require": {
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"doctrine/orm": "^2.5",
"incenteev/composer-parameter-handler": "^2.0",
"misd/phone-number-bundle": "^1.2",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"symfony/monolog-bundle": "^3.0.2",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.3.10",
"symfony/symfony": "3.3.*",
"twig/twig": "^1.0||^2.0"
},
我在做什么错?有什么想法吗?
谢谢!
您的platform
设置被忽略,因为您没有将其包装在config
节点中。以下配置将工作:
{
"config": {
"platform": {
"php": "7.0"
},
},
"require": {
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": "^1.2",
"doctrine/orm": "^2.5",
"incenteev/composer-parameter-handler": "^2.0",
"misd/phone-number-bundle": "^1.2",
"sensio/distribution-bundle": "^5.0",
"sensio/framework-extra-bundle": "^3.0.2",
"symfony/monolog-bundle": "^3.0.2",
"symfony/polyfill-apcu": "^1.0",
"symfony/swiftmailer-bundle": "^2.3.10",
"symfony/symfony": "3.3.*",
"twig/twig": "^1.0||^2.0"
}
}
如果将平台用作" php":" 7.0",那么您将通过此
尝试 "require": {
"php" : ">=7.0.21",
"symfony/symfony" : "3.3.4",
"doctrine/orm" : "2.5.10",
"doctrine/doctrine-bundle" : "1.6.8",
"doctrine/doctrine-cache-bundle" : "1.3.0",
...
如果您严格定义了所有版本,它将很容易找到特定版本的错误。
这对我有用。
正确的方法是检查您拥有的PHP:
php --version
然后告诉该作曲家将自动黑名单与不匹配的版本
composer config platform.php 7.0.17
然后查看作曲家是否可以降级该软件包(只有该软件包,我们不需要无关的更新; dry-run =只看,不做,不要做)
)composer update doctrine/common --with-dependencies --dry-run
,就我的情况而言,作曲家告诉我,我们还需要降级另一个包裹,所以我终于做到了
composer update doctrine/common symfony/dom-crawler --with-dependencies
奏效的。
我发现当我运行时解决了问题:
composer update --with-dependencies
这拉出了我只运行composer update
doctrine/annotations
依赖项
...
Package operations: 1 install, 0 updates, 0 removals
- Installing doctrine/annotations (1.7.x-dev 232c5da): Cloning 232c5da390 from cache
Writing lock file
Generating autoload files
...
解决问题!:-)我从学说的网站上下载了1.2.7版的注释,并起作用。http://www.doctrine-project.org/projects/annotations.html
很奇怪的是,在他们的网站上,他们说最后一个版本是1.2.7,但我可以使用作曲家下载版本1.4.0 ...