php – Symfony – twig – Autoloader预期课程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Symfony – twig – Autoloader预期课程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6118字,纯文字阅读大概需要9分钟。
内容图文
![php – Symfony – twig – Autoloader预期课程](/upload/InfoBanner/zyjiaocheng/782/a8683393537a4de4a7261c42c8823252.jpg)
我有一个symfony的问题,显然是树枝.
我已经在一个项目上工作了一段时间,当我即将发布一个新版本时(通过ftp上传所有内容,遵循:https://medium.com/@runawaycoin/deploying-symfony-4-application-to-shared-hosting-with-just-ftp-access-e65d2c5e0e3d).
在上传之前,我发现应用程序在前一天停止工作.我开始搜索问题,但日志中没有任何内容.我决定重新上传所有内容并清除缓存,以防可能出现问题,但仍然没有,只是500错误.
然后我启用调试,并得到错误:
The autoloader expected class "Twig\Extension\AbstractExtension" to be defined in file ".../symfony/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php". The file was found but the class was not in it, the class name or namespace probably has a typo.
我尝试了我能在网上找到的所有东西,但是唯一有类似问题的人通过添加twig / extensions来解决它,但这也解决不了.
我根本没有得到可能发生的事情,但这个问题似乎没有任何理由,并且没有任何文件更改.
该应用程序之前工作,仍然可以脱机工作.
这是AbstractExtension.php的代码,它与twigphp / twig repo上的代码相同:
<?php
namespace Twig\Extension;
class_exists('Twig_Extension');
if (\false) {
class AbstractExtension extends \Twig_Extension
{
}
}
PS:这个如果错误听起来很奇怪,但与在线相同,所以我不明白
编辑:这是日志文本:
(1/1) RuntimeException
The autoloader expected class "Twig\Extension\AbstractExtension" to be defined in file "/home/homeviewcx/symfony/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php". The file was found but the class was not in it, the class name or namespace probably has a typo.
in DebugClassLoader.php line 288
at DebugClassLoader->checkClass('Twig\\Extension\\AbstractExtension', '/home/homeviewcx/symfony/vendor/composer/../twig/twig/src/Extension/AbstractExtension.php')
in DebugClassLoader.php line 159
at DebugClassLoader->loadClass('Twig\\Extension\\AbstractExtension')
at spl_autoload_call('Twig\\Extension\\AbstractExtension')
in CsrfExtension.php line 21
at require('/home/homeviewcx/symfony/vendor/symfony/twig-bridge/Extension/CsrfExtension.php')
in DebugClassLoader.php line 145
at DebugClassLoader->loadClass('Symfony\\Bridge\\Twig\\Extension\\CsrfExtension')
at spl_autoload_call('Symfony\\Bridge\\Twig\\Extension\\CsrfExtension')
at class_exists('Symfony\\Bridge\\Twig\\Extension\\CsrfExtension')
in FrameworkExtension.php line 1240
at FrameworkExtension->registerSecurityCsrfConfiguration(array('enabled' => true), object(MergeExtensionConfigurationContainerBuilder), object(XmlFileLoader))
in FrameworkExtension.php line 205
at FrameworkExtension->load(array(array('router' => array('resource' => 'kernel::loadRoutes', 'type' => 'service')), array('secret' => 'env_d3d895c31330f4ea_APP_SECRET_dd4bd60cef72a43e4dea38ee2ba60137', 'session' => array('handler_id' => null), 'php_errors' => array('log' => true), 'cache' => null), array('router' => array('strict_requirements' => null)), array('default_locale' => 'en', 'translator' => array('paths' => array('/home/homeviewcx/symfony/translations'), 'fallbacks' => array('en'))), array('validation' => array('email_validation_mode' => 'html5')), array('cache' => array('pools' => array('doctrine.result_cache_pool' => array('adapter' => 'cache.app'), 'doctrine.system_cache_pool' => array('adapter' => 'cache.system'))))), object(MergeExtensionConfigurationContainerBuilder))
in MergeExtensionConfigurationPass.php line 76
at MergeExtensionConfigurationPass->process(object(ContainerBuilder))
in MergeExtensionConfigurationPass.php line 39
at MergeExtensionConfigurationPass->process(object(ContainerBuilder))
in Compiler.php line 95
at Compiler->compile(object(ContainerBuilder))
in ContainerBuilder.php line 746
at ContainerBuilder->compile()
in Kernel.php line 519
at Kernel->initializeContainer()
in Kernel.php line 123
at Kernel->boot()
in Kernel.php line 183
at Kernel->handle(object(Request))
in app.php line 50
这是我的composer.json:
{
"type": "project",
"license": "proprietary",
"require": {
"php": "^7.1.3",
"ext-iconv": "*",
"sensio/framework-extra-bundle": "^5.1",
"symfony/apache-pack": "^1.0",
"symfony/asset": "^4.1",
"symfony/config": "^4.1",
"symfony/console": "^4.1",
"symfony/dependency-injection": "^4.1",
"symfony/expression-language": "^4.1",
"symfony/flex": "^1.0",
"symfony/form": "^4.1",
"symfony/framework-bundle": "^4.1",
"symfony/lts": "^4@dev",
"symfony/monolog-bundle": "^3.1",
"symfony/orm-pack": "*",
"symfony/process": "^4.1",
"symfony/security-bundle": "^4.1",
"symfony/serializer-pack": "*",
"symfony/swiftmailer-bundle": "^3.1",
"symfony/twig-bundle": "^4.1",
"symfony/validator": "^4.1",
"symfony/web-link": "^4.1",
"symfony/yaml": "^4.1"
},
"require-dev": {
"symfony/debug-pack": "*",
"symfony/dotenv": "^4.1",
"symfony/maker-bundle": "^1.0",
"symfony/profiler-pack": "*",
"symfony/test-pack": "^1.0",
"symfony/web-server-bundle": "^4.1"
},
"config": {
"preferred-install": {
"*": "dist"
},
"sort-packages": true
},
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
"replace": {
"symfony/polyfill-iconv": "*",
"symfony/polyfill-php71": "*",
"symfony/polyfill-php70": "*",
"symfony/polyfill-php56": "*"
},
"scripts": {
"auto-scripts": {
"cache:clear": "symfony-cmd",
"assets:install %PUBLIC_DIR%": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
],
"post-update-cmd": [
"@auto-scripts"
],
"prod": [
"SET APP_ENV=prod",
"composer install --no-dev --optimize-autoloader",
"composer dump-autoload --optimize --no-dev --classmap-authoritative"
],
"dev": [
"SET APP_ENV=dev",
"composer install"
]
},
"conflict": {
"symfony/symfony": "*"
},
"extra": {
"symfony": {
"allow-contrib": false
}
}
}
PS:我个人没有将AbstractExtension类扩展到任何地方(也没有任何其他的twig类),也没有触及容器编译器(这里仍然相对较新),但是,可能是它
解决方法:
查看导致错误的提交:
唯一的变化是预期加载类的方式,因为class_exists(‘Twig_Extension’)将调用__autoload(),因此预期在此阶段已调用该类.
看起来您已经更新了依赖项,但是您是否清除了缓存?由于问题在本地不可用(在dev上工作正常),问题只出在你的服务器上(应用程序在prod模式下运行),symfony可能仍在使用解释错误的旧缓存.
如果是这种情况,您需要运行以下命令刷新服务器上的缓存:
php bin / console cache:clear –no-warmup –env = prod
内容总结
以上是互联网集市为您收集整理的php – Symfony – twig – Autoloader预期课程全部内容,希望文章能够帮你解决php – Symfony – twig – Autoloader预期课程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。