通过filezilla将symfony 4.2项目部署到共享托管

时间:2018-12-29 17:59:58

标签: symfony cpanel symfony4 shared-hosting

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

我将所有项目都部署到public_html下的托管中。

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

当前文档根目录:public_html

project folder structure

我的index.php位于公用文件夹下。

   <?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);

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

2 个答案:

答案 0 :(得分:0)

我有一个在共享主机下运行的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'

答案 1 :(得分:0)

人们说symfony并不意味着这样做是完全错误的!

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

我正在OVH云托管,这是半私有托管。通过在控制面板中将我的域名指向www / mysymfonyapp / public并将.htaccess添加到公共目录,可以使它起作用:

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

像魅力一样工作!