通过 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
我的 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>
很有魅力!
我有一个基于 Symfony 4.2 的项目。我想将此项目部署到共享主机。但是在 symfony 文档中,没有任何关于它的明确内容。
我将我的所有项目都部署到了 public_html 下的主机中。
但可能面板没有找到index.php。在 cpanel 上,我无法更改文档根目录。
当前文档根目录:public_html
我的 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>
很有魅力!