Как установить Laravel 4 в подпапку веб-узла без публичного раскрытия/ app / папки?
Мне было интересно, знает ли кто-нибудь из вас способ установки 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 4public/
папка.теперь, для остальных файлов. Вы должны перейти в корень ваших файлов веб-хостинга, то есть вы хотите быть в
domain.com/
уровень, поэтому возможность видетьpublic_html/
и некоторые другие папки. Затем нам нужно создать папку здесь, где будут храниться базовые файлы Laravel 4. В данном случае, этоdomain.com/yourlaravel4_base/
. Внутриyourlaravel4_base/
мы должны хранить каждый файл и папку, которая существует в базе Laravel 4 каталога. Это было быapp/
,bootstrap/
,vendor/
,server.php
и т. д. Все, кроме/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/',
В конечном итоге установите RewriteBase в вашем /public/.htaccess
RewriteBase /mylaravel/
работает как шарм и держит вашу структуру каталогов в чистоте и по существу!
люди, люди! Не нужно все усложнять!
(для других общих папок, например,
htdocs
илиwww
просто заменитьpublic_html
в следующем с одной.)
- Поместите все свои вещи Laravel в папку верхнего уровня (так что
app
папка находится рядом с )- переместить все файлы из
public
доpublic_html
(Не забудьте также переместить скрытые файлы, такие как.htaccess
!)- Удалить сейчас пусто
public
папкуна
bootstrap/path.php
изменить
'public' => __DIR__.'/../public',
до
'public' => __DIR__.'/../public_html',
- сделано.
Эммануэль ответ не работает для меня, но я сделал некоторые изменения, чтобы сделать его работу . хотя я использовал свой веб-корень, чтобы быть источником проекта . там ; у меня есть папка 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 . но мы должны быть в htdocs . поэтому мы должны написать еще один (../) чтобы попасть туда .
открыть htdocs / index.php и найти
require __DIR__.'/../bootstrap/autoload.php';на
require 'laravel/bootstrap/autoload.php';require-это встроенная функция php, поэтому мы будем рассматривать ее как простой php . нам действительно не нужен стиль laravel для извлечения autoload.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 wizard в своей панели ,мастер должен запросить у вас корень документа . например, я хочу добавить 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). Вам нужно иметь резервную копию всех файлов в нем, потому что вы удаляете его. Кроме того, вам понадобится быть готовым пройти через службу поддержки восстановить его. Многие службы хостинга не позволяют вам просто воссоздать папку самостоятельно.