我有一个基于Symfony 4.2的项目。我想将此项目部署到共享主机。但是在symfony文档中,没有任何明确的内容。
我将所有项目都部署到public_html下的托管中。
但是可能面板没有找到index.php。在cpanel上,我无法更改文档根目录。
当前文档根目录:public_html
我的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);
有人可以帮我解决这个问题吗?
答案 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>
像魅力一样工作!