运行 共享主机上的 Symfony 应用无法运行

Run Symfony app on shared hosting not working

我想 运行 我的 Symfony5 应用程序在共享主机 (cpanel) 上。 在共享主机上,我有以下文件夹结构:

/
/public_html
/symfony

当我将整个项目放在 public_html 文件夹中时,它从 https://domain.abc/public 开始工作,但这不是它应该工作的方式,因为另一个 symfony 文件夹不应该可见。

我已将 symfony/public 文件夹中的文件放入 public_html 文件夹 /public_html文件夹下的index.php(755权限)是这样的:

<?php

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

require dirname(__DIR__).'/../symfony/vendor/autoload.php';

(new Dotenv())->bootEnv(dirname(__DIR__).'/../symfony/.env');

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

    Debug::enable();
}

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

但是我去 https://domain.abc

时出现黑屏

知道我做错了什么吗?

在这种情况下,最好让 /public_html 成为指向 /symfony/public 的符号链接。

或者,如果您的托管服务提供商允许,您可以将域的根目录重新配置为 /symfony/public.

无论哪种情况,首先删除 /public_html 并撤销在 /symfony/public/index.php 中所做的任何更改。
如果您在 /symfony/* 内没有做任何更改,那么您只需要 运行 下面的命令来创建一个符号链接:

rm -r -f /public_html/
ln -s /symfony/public /public_html