Загрузка проекта Laravel на веб-сервер
Я пытаюсь загрузить проект Laravel на свой веб-сервер, но мои прошлые две попытки не увенчались успехом. Я считаю, что я не загружаю файлы в нужное место.
Это моя структура веб-сервера → ![WebServer Structure]()
Можно ли сказать, что мне нужно загрузить ВСЕ мои файлы laravel в public_html?
Это мой каталог проектов Laravel:
![Laravel Project Directory]()
EDIT: теперь я добавил все файлы в корневую папку и public в public_html, однако ни один из моих маршрутов не работает. (Они отлично работают на локальном хосте). Все выбрасывает 404
Ответы
Ответ 1
Нет, но у вас есть несколько вариантов:
Самый простой способ - загрузить все файлы, которые у вас есть, в тот каталог, в котором вы находитесь (например, домашний каталог пользователя cPanel), и поместить его в public_html. Таким образом, структура вашего каталога будет чем-то вроде этого (слегка грязная, но она работает):
/
.composer/
.cpanel/
...
app/ <- your laravel app directory
etc/
bootstrap/ <- your laravel bootstrap directory
mail/
public_html/ <- your laravel public directory
vendor/
artisan <- your project root files
Вам также может потребоваться отредактировать bootstrap/paths.php
, чтобы указать на правильный общий каталог.
Другое решение, если вам не нравится, что все эти файлы в этом корневом каталоге будут помещены в их собственный каталог (возможно, "laravel" ), который все еще находится в корневом каталоге, а затем редактирует пути к работайте правильно. Вам все равно нужно поместить содержимое public
в public_html
, и на этот раз отредактировать public_html/index.php
, чтобы правильно загружать приложение. Структура вашей папки будет намного более аккуратной (хотя могут быть некоторые головные боли с путями из-за вовлечения в структуру, разработанную каркасом, больше):
/
.composer/
.cpanel/
...
etc/
laravel/ <- a directory containing all your project files except public
app/
bootstrap/
vendor/
artisan
mail/
public_html/ <- your laravel public directory
Ответ 2
Если вы пытаетесь разместить ваше приложение Laravel на общем хостинге, это может вам помочь.
Хостинг Laravel на общем хостинге # 1
Хостинг Laravel на общем хостинге # 2
Если вы хотите, чтобы PHP 5.4 добавлял эту строку в ваш файл .htaccess
или вызывал вашего хостинг-провайдера.
AddType application/x-httpd-php54 .php
Ответ 3
Я считаю, что ваши файлы/папки Laravel не должны размещаться в корневом каталоге.
например. Если ваш домен указан в каталоге public_html
, то все содержимое должно быть помещено в этот каталог. Как? позвольте мне рассказать вам
- Скопировать все файлы и папки (включая общую папку) в общедоступный html
- Скопировать весь контент общей папки и вставить его в корень документа (то есть public_html)
- Удалить общую папку
-
Откройте ваш bootstrap/paths.php, а затем измените 'public' => __DIR__.'/../public',
на 'public' => __DIR__.'/..',
-
и, наконец, в index.php,
Изменить
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
в
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';
Теперь ваше приложение Laravel должно работать.
Ответ 4
Все ваши файлы Laravel должны находиться в одном месте.
Laravel обнажает свою общедоступную папку на сервер. Эта папка представляет собой какой-то фронт-контроллер для всего приложения. В зависимости от конфигурации сервера вам необходимо указать путь к серверу в этой папке. Как я вижу, на вашем снимке есть сайт www. www - это корневой каталог по умолчанию на компьютерах Unix/Linux.
Лучше всего заглянуть в конфигурацию вашего сервера и найти местоположение корневого каталога. Как вы можете видеть, у Laravel уже есть файл с именем .htaccess, с некоторой готовой конфигурацией Apache.
Ответ 5
Если бы эта проблема тоже возникла и выяснилось, что самый простой способ - указать ваш домен в общую папку и оставить все остальное так, как они есть.
ПОЖАЛУЙСТА, ОБРАЩАЙТЕСЬ ИСПОЛЬЗОВАТЬ ПРАВУЮ ВЕРСИЮ PHP. Сэкономьте себе стресс:)
Ответ 6
В Laravel 5.x нет paths.php
поэтому вы должны отредактировать public/index.php
и изменить эти строки, чтобы пинтать в каталог bootstrap
:
require __DIR__.’/../bootstrap/autoload.php’;
$app = require_once __DIR__.’/../bootstrap/app.php’;
для получения дополнительной информации вы можете прочитать эту статью.