Как установить Laravel 4 в подпапку веб-узла без публичного раскрытия/ app / folder?
Мне было интересно, знает ли кто-нибудь из вас способ установить Laravel 4 в подкаталог / подпапку веб-хоста, не подвергая папку /app/ и другие разумные файлы общедоступной части хоста.
по идее, я бы мог получить доступ к http://mydomain.com/mylaravel/ уметь использовать фреймворк Laravel, но в то же время я хочу, чтобы избежать тех, кто делает что-то как идти к http://mydomain.com/app/ или http://mydomain.com/mylaravel/app/ и в основном возможность видеть мои файлы конфигурации и другой код.
9 ответов
так я понял, как это сделать. Я объясню на примере.
Предположим, вы домен,http://domain.com. Вот пример структуры, которую вы можете использовать:
domain.com/ (the root of your web hosting)
|-- yourlaravel4_base/
|-- [some other folders...]
|-- public_html/ (where your html files and such go)
| |-- [some other folders...]
| |-- yourlaravel4/
/public_html/
является корнем общедоступной части ваших файлов веб-хостинга.
Вы хотите создать подпапку в /public_html/
(в данном случае /public_html/yourlaravel4/
). В этой подпапке вы будете хранить все содержание из Laravel 4 public/
папка.
теперь, для остальных файлов. Вы должны перейти в корень ваших файлов веб-хостинга, то есть вы хотите быть в domain.com/
уровень, поэтому возможность видеть public_html/
и некоторые другие папки. Затем нам нужно создать папку здесь, где будут храниться базовые файлы Laravel 4. В этом случае это domain.com/yourlaravel4_base/
. Внутри yourlaravel4_base/
нам нужно сохранить каждый файл и папку, которая существует в базовом каталоге Laravel 4. Это было бы app/
, bootstrap/
, vendor/
, server.php
, etc. Все, кроме /public/
папка, содержимое которой вы уже сохранили в public_html/yourlaravel4/
.
наконец, нам необходимо отредактировать 2 файла: что Laravel-это /bootstrap/paths.php
и /public/index.php
.
на заменить:
'app' => __DIR__.'/../app',
С:
'app' => __DIR__.'/../../yourlaravel4_base/app',
на заменить:
'public' => __DIR__.'/../public',
С:
'public' => __DIR__,
на , заменить:
'base' => __DIR__.'/..',
С:
'base' => __DIR__.'/../../yourlaravel4_base',
на paths.php
заменить:
'storage' => __DIR__.'/../app/storage',
С:
'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',
на index.php
заменить:
require __DIR__.'/../bootstrap/autoload.php';
С:
require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';
на index.php
заменить:
$app = require_once __DIR__.'/../bootstrap/start.php';
С:
$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';
загрузить изменения. Теперь вы должны иметь возможность установить Laravel 4 в подпапке на вашем веб-сайте, фактически не подвергая и другие конфиденциальные файлы. :)
вы можете использовать псевдоним: нет hankey-pankey с широко распространенными каталогами в вашей системе.
укажите в своем httpd.conf или админ-панели:
/mylaravel/ /path/to/laravel/public
кроме того, укажите URL-адрес в приложении Laravel.в PHP
строка 29
'url' => 'http://yourdomain.com/mylaravel/',
В конечном итоге установите базу перезаписи в вашем /public/.реврайт
RewriteBase /mylaravel/
работает как шарм и держит вашу структуру каталогов чистой и к месту!
люди, люди! Не нужно все усложнять!
(для других общих папок, например,htdocs
или www
просто заменить public_html
в следующем с одной.)
- Поместите все свои вещи Laravel в папку верхнего уровня (так что
app
папка находится рядом с ) - переместить все файлы из
public
topublic_html
(Не забудьте также переместить скрытые файлы, такие как.htaccess
!) - Удалить сейчас пусто
public
папку -
на
bootstrap/path.php
изменить'public' => __DIR__.'/../public',
to'public' => __DIR__.'/../public_html',
- сделано.
emmanuel ответ не работает для меня, но я сделал некоторые изменения, чтобы заставить его работать . хотя я использовал свой веб-корень, чтобы быть источником проекта . там ; у меня есть папка htdocs в качестве корневой папки, но у вас могут быть другие, например public_html , www и так далее . вы можете легко заменить мои htdocs на тот, который у вас есть .
хорошо .
мой dircetory
root/ htdocs .htaccess .override
сначала я решил все зависимости laravel от моего localhost в windows с помощью composer . после что я упаковал весь пакет в laravel4.застежка-молния. в моих htdocs я создаю папку laravel, и я загрузил и распаковал zip-файл в ней.
htdocs/ laravel/ app bootstrap public vendors ...
поэтому после того, как я распаковал файл, я перемещаю все в общую папку в папку htdocs
htdocs/ laravel packages .htaccess favicon.ico index.php robots.txt
теперь мы должны переписать некоторые патхи в htdocs / index.php и htdocs / laravel / bootstrap / пути.в PHP
но позволяет открыть htdocs / laravel / bootstrap / пути.РНР. вы увидите
'app' => __DIR__.'/../app',
что делает это значит . это означает, что мы стоим на htdocs/laravel/bootstrap/ path . и там нам нужно выйти из этой папки в папку laravel, а затем перейти к папке приложения . ладно. это структура laravel для маршрутизации . если вы все сделаете правильно, вы можете сделать свой laravel run .
найти
'public' => __DIR__.'/../public',
и меняем его на
'public' => __DIR__.'/../../htdocs',
(простой ha ) с одним (../) из них мы можем перейти в одну папку . Итак, теперь мы в папке laravel . но мы должны быть в htdoc . поэтому мы должны написать еще (../ ) добраться туда .
открыть htdocs / index.php и найти
require __DIR__.'/../bootstrap/autoload.php';
на
require 'laravel/bootstrap/autoload.php';
require-это встроенная функция php, поэтому мы будем рассматривать ее как простой php . нам не нужен стиль laravel для получения автопогрузки.PHP-файл. так что просто удалите его и перейти на классический стиль
найти
$app = require_once __DIR__.'/../bootstrap/start.php';
на
$app = require_once 'laravel/bootstrap/start.php';
Если вы пытаетесь запустить Laravel 5.1 в общее пространство хостинга, и все вышеперечисленные ответы, похоже, немного отличаются от фактических файлов/папок Laravel, или вы ищете, как поместить ваш laravel 5/5.1 в подкаталог на вашем общем хостинге, чтобы вы могли получить к нему доступ следующим образом:
http://mywebsite.com/mylaravel/
Так что этот ответ для вас, прежде всего убедитесь, что вы встречаете
фреймворк Laravel 5.1 требования :
- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL
вот два простых учебника для вас :
Если на панели используется мастер addondomain или subdomaind ,мастер должен запросить у вас root документа . например я хочу аддон droidman.com , волшебник должен предложить мне сделать droidman.com папка . на этом шаге скажите мастеру сделать droidman.com/public папка . затем поместите приложение в droidman.com папка . ваш хост будет смотреть на общую папку ;). проблема решена
Если вы хотите просто настроить проект Laravel на общем хостинге, и у вас есть доступ к cPanel, вы можете выполнить следующие шаги, которые я выполнил, и это сработало хорошо.
Шаг 1: Сделайте zip или tar-файл всего вашего приложения Laravel на Вашем локальном компьютере.
Шаг 2: Перейдите в Cpanel. Загрузите файл zip / tar в каталог public_html, а затем извлеките его. (Вы также можете создать отдельную папку для своего приложения laravel. Поскольку я хочу загрузить более одного Laravel приложения я создал отдельный каталог для каждого из них, как показано на рисунке ниже.)
Шаг 3: Теперь перейдите к "Addon Domain" и измените корень документа указанного домена. Укажите домен в общую папку.
теперь проверьте свой домен, он будет перенаправлен на public / index.PHP-файл. Нет необходимости менять какие-либо пути.
Если вы используете сервер apache, самый простой способ сделать это-разместить приложение Laravel за пределами корня www (или в защищенной папке в корне www), а затем символически связать нужную подпапку, чтобы указать ей общую папку в laravel
например, я размещаю свои установки laravel в:
/usr/local/share/myLaravel
затем в общедоступной папке www создайте символическую ссылку следующим образом:
ln -s /usr/local/share/myLaravel/public mylaravel
вам нужно будет внести некоторые коррективы в вашу установку, например поместите базу перезаписи в /mylaravel / и убедитесь, что ваши файлы конфигурации разрешают переопределения в базовом расположении, но это проще, чем изменять все.
Не забудьте проверить свои разрешения. Я развернул через следующее, хотя я не рекомендую его.
я использовал SSH и сделал что-то типа:
rm -rf public_html/ // WARNING: READ NOTE AT THE BOTTOM BEFORE RUNNING
ln -s project_folder/public/ public_html // where the format is ln -s target name
после этого я получу сообщение типа "Упс, похоже, что что-то пошло не так" (или ошибка в зависимости от настроек отладки). Чтобы исправить это, мне просто нужно было изменить мои разрешения на 755 для моих папок. ссылка: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel
в целом, я собираюсь вернуться и попробовать оригинальный способ с измененными разрешениями, поскольку я нахожу этот маршрут менее безопасным и более зависимым от моего хостинга.
*****Примечание***** Эта команда, очевидно, удаляет вашу папку public_html (также иногда называемую public или www). Вы должны иметь резервную копию всех файлов в нем, потому что вы удаляете его. Кроме того, вам понадобится быть готовым пройти обслуживание клиентов, чтобы восстановить его. Многие службы хостинга не позволяют просто воссоздать папку самостоятельно.