是否可以在没有命令行的情况下在服务器上运行symfony 4应用程序?

问题描述 投票:0回答:1

我检查了https://symfony.com/doc/current/deployment.html#common-post-deployment-tasks

而不是我需要用命令行做什么,我已经手动完成了。例如 - 刚从本地计算机复制的供应商文件,使用静态.env文件手动清除缓存,因为无法设置环境变量。

第一次加载页面,但在下次加载时我收到错误

尝试从命名空间“Symfony \ Component \ DependencyInjection \ Config”加载类“ContainerParametersResourceChecker”。您是否忘记了另一个命名空间的“use”语句?

我认为在清除缓存之前有同样的错误。当然我们无法清除每个页面加载的缓存。

是不是可以永久修复它,或者它是 - 如何?

堆栈跟踪:

Symfony\Component\Debug\Exception\ClassNotFoundException:
Attempted to load class "ContainerParametersResourceChecker" from namespace "Symfony\Component\DependencyInjection\Config".
Did you forget a "use" statement for another namespace?

  at var/cache/dev/ContainerWz8cB8L/srcDevDebugProjectContainer.php:357
  at ContainerWz8cB8L\srcDevDebugProjectContainer->ContainerWz8cB8L\{closure}()
     (vendor/symfony/config/ResourceCheckerConfigCache.php:95)
  at Symfony\Component\Config\ResourceCheckerConfigCache->isFresh()
     (vendor/symfony/config/ResourceCheckerConfigCacheFactory.php:42)
  at Symfony\Component\Config\ResourceCheckerConfigCacheFactory->cache('/home/dari/domains/dari.us.lt/public_html/symfony_4_persons_demo/var/cache/dev/srcDevDebugProjectContainerUrlMatcher.php', object(Closure))
     (vendor/symfony/routing/Router.php:302)
  at Symfony\Component\Routing\Router->getMatcher()
     (vendor/symfony/routing/Router.php:256)
  at Symfony\Component\Routing\Router->matchRequest(object(Request))
     (vendor/symfony/http-kernel/EventListener/RouterListener.php:109)
  at Symfony\Component\HttpKernel\EventListener\RouterListener->onKernelRequest(object(GetResponseEvent), 'kernel.request', object(EventDispatcher))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:212)
  at Symfony\Component\EventDispatcher\EventDispatcher->doDispatch(array(array(object(DebugHandlersListener), 'configure'), array(object(ValidateRequestListener), 'onKernelRequest'), array(object(SessionListener), 'onKernelRequest'), array(object(RouterListener), 'onKernelRequest'), array(object(ResolveControllerNameSubscriber), 'onKernelRequest'), array(object(LocaleListener), 'onKernelRequest'), array(object(TranslatorListener), 'onKernelRequest'), array(object(TraceableFirewallListener), 'onKernelRequest')), 'kernel.request', object(GetResponseEvent))
     (vendor/symfony/event-dispatcher/EventDispatcher.php:44)
  at Symfony\Component\EventDispatcher\EventDispatcher->dispatch('kernel.request', object(GetResponseEvent))
     (vendor/symfony/http-kernel/HttpKernel.php:127)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1)
     (vendor/symfony/http-kernel/HttpKernel.php:66)
  at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true)
     (vendor/symfony/http-kernel/Kernel.php:190)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (public/index.php:34)

更新:

通过评论,我仍然不确定该怎么做。这是评论中的链接:How to deploy a symfony project without SSH and CLI access to production

设置parameters.yml

看不到这样的文件。

环境变量 - 我认为它们在$ parameter-> resolve()期间被复制到缓存中

我不认为我可以在没有命令行的情况下设置它们。

缓存:清理--env prod

在ftp中手动删除缓存文件夹内容。

删除日志

真的有关系吗?

资产:安装--env prod

我不认为我使用它们。

我只是在var文件夹上设置了777的权限,以防因为它们出错。它不是一个生产服务器,所以不关心安全性,只需要运行一个演示。

php symfony
1个回答
0
投票

您需要使用生产设置在localhost上进行完全可用的构建,然后上载它。您知道您的特定项目在本地工作的所有步骤。因此,将项目克隆到生产设置的新文件夹中,然后执行所有步骤。完成后,将所有内容上传到服务器并修复密钥文件夹的权限。

注意:parameters.yml是您设置symfony参数的文件,如:

  • 数据库服务器地址
  • 数据库名称
  • 数据库用户名
  • 数据库密码
  • smtp服务器
  • smtp用户名
  • smtp地址

但在symfony 4中,它已被环境变量取代。

© www.soinside.com 2019 - 2024. All rights reserved.