通过 filezilla 将 symfony 4.2 项目部署到共享主机

deploy symfony 4.2 project to shared hosting by filezilla

我有一个基于 Symfony 4.2 的项目。我想将此项目部署到共享主机。但是在 symfony 文档中,没有任何关于它的明确内容。

我将我的所有项目都部署到了 public_html 下的主机中。

但可能面板没有找到index.php。在 cpanel 上,我无法更改文档根目录。

当前文档根目录:public_html

project folder structure

我的 index.php 在 public 文件夹下。

   <?php

   use App\Kernel;
   use Symfony\Component\Debug\Debug;
   use Symfony\Component\HttpFoundation\Request;

   require dirname(__DIR__).'/config/bootstrap.php';

   if ($_SERVER['APP_DEBUG']) {
        umask(0000);

        Debug::enable();
   }

   if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? 
        $_ENV['TRUSTED_PROXIES'] ?? false) {
        Request::setTrustedProxies(explode(',', $trustedProxies), 
  Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST);
   }

   if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? 
       $_ENV['TRUSTED_HOSTS'] ?? false) {
            Request::setTrustedHosts([$trustedHosts]);
   }

   $kernel = new Kernel($_SERVER['APP_ENV'], (bool) 
   $_SERVER['APP_DEBUG']);
   $request = Request::createFromGlobals();
   $response = $kernel->handle($request);
   $response->send();
   $kernel->terminate($request, $response);

有人可以帮我解决这个问题吗?

我在共享主机下有一个 symfony4 应用程序 运行,所以在 .htaccess

中尝试这个配置
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteBase /
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ public/index.php [QSA,L]
</IfModule>

对于资产,请在 framework.yaml

中尝试此操作
    assets:
        base_path: '/public'

有人说 symfony 不适合这个是完全错误的!

Symfony 没有说明如何托管它,它(几乎)完全不知道它的托管平台。您唯一需要做的就是将您的服务器请求转发到 public/index.php.

我在 OVH 云托管,即 semi-private 托管。我通过将控制面板中的域名指向 www/mysymfonyapp/public 并将 .htaccess 添加到 public 目录来使其工作:

# mysymfonyapp/public/.htaccess:
<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteBase /
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

很有魅力!