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

时间:2017-12-26 14:44:29

标签: php symfony

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

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

首次加载页面,但在下次加载时出现错误

  

尝试加载类" ContainerParametersResourceChecker"从   namespace" Symfony \ Component \ DependencyInjection \ Config"。你是否   忘记"使用"另一个命名空间的语句?

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

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

堆栈跟踪:

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

看不到这样的文件。

  

Environtment vars - 我认为它们会在$ parameter-> resolve()

期间被复制到缓存中

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

  

缓存:清理--env prod

在ftp。

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

删除日志

真的重要吗?

  

资产:安装--env prod

我认为我不会使用它们。

我只是在var文件夹上设置777的权限,以防由于它们而出现问题。它不是一个生产服务器,因此不需要过多关注安全性,只需要运行一个演示。

1 个答案:

答案 0 :(得分:0)

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

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

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

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