#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
этим отсутствовала.