Запустить приложение Symfony на общем хостинге не работает

#php #symfony #cpanel #shared-hosting

Вопрос:

Я хочу запустить свое приложение Symfony5 на общем хостинге (cpanel). На общем хостинге у меня следующая структура папок:

 /
/public_html
/symfony
 

Когда я помещаю весь проект в папку public_html, он работает с https://domain.abc/public но это не так, как должно работать, так как другая папка symfony не должна быть видна.

Я поместил файл из папки symfony/public в папку public_html в index.php (с правами 755) в папке /public_html выглядит так:

 <?php

use AppKernel;
use SymfonyComponentDotenvDotenv;
use SymfonyComponentErrorHandlerDebug;
use SymfonyComponentHttpFoundationRequest;

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

Есть идеи, что я делаю не так?

Ответ №1:

В этой ситуации лучше всего иметь /public_html символическую ссылку, указывающую на /symfony/public .

В качестве альтернативы, если ваш хостинг-провайдер позволяет это, вы можете заново настроить корневой каталог для своего домена /symfony/public .

В любом случае начните с удаления /public_html и отмены любых изменений, внесенных в /symfony/public/index.php .
Если вы не внесли никаких изменений внутри /symfony/* , вам нужно только выполнить приведенные ниже команды для создания символической ссылки:

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

Комментарии:

1. ln: failed to create symbolic link '/public_html': Permission denied

2. Я смог сделать так, чтобы символическая ссылка с ln -s /home/<username>/symfony/public /public_html этим отсутствовала.