Як усталяваць Laravel 4 да хасту укладзенай вэб без публічнага выкрыцця/дадатак/папкі?

Мне было цікава, калі хто з вас ведае, як усталяваць Laravel 4 у вэб-хостынгу падкаталогу/падтэчку, а не падвяргаючы/дадатак/тэчку і іншыя слушныя файлы публічна частка даступнага для хаста.

Ідэя заключаецца ў тым, што я змагу атрымаць доступ да http://mydomain.com/mylaravel/ , каб мець магчымасць выкарыстоўваць Laravel, але у той жа час я хачу, каб пазбегнуць тых, хто робіць нешта падобнае будзе http://mydomain.com/app/ або http://mydomain.com/mylaravel/app/ і ў асноўным у стане ўбачыць мае канфігурацыйныя файлы і іншы код.

60

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/ is the root of the publicly accessible part of your web hosting files. You want to create a subfolder in /public_html/ (in this case /public_html/yourlaravel4/). In this subfolder you will store all the contents of the Laravel 4 public/ folder.

Зараз, для астатніх файлаў. Вы павінны пайсці ў корань вашага вэб-хостынг файлаў, гэта значыць, вы хочаце быць у domain.com/ ўзровень, таму ў стане ўбачыць public_html/ і некаторыя іншыя тэчкі. Затым нам трэба стварыць тэчку тут, дзе файлы базы Laravel 4 будуць захаваны. У гэтым выпадку, гэта domain.com/yourlaravel4_base/. Ўнутры yourlaravel4_base/ мы павінны захоўваць усе файлы і тэчкі, якія існуюць у базе Laravel 4 каталога. Гэта будзе дадатак/, самазагрузкі/, пастаўшчыка/, server.php і г.д. Усе, акрамя < код>/адчынены/ тэчка, змесціва якога вы ўжо захоўваюцца ў public_html/yourlaravel4/.

Нарэшце, нам трэба адрэдагаваць 2 файла: Laravel ў /bootstrap/paths.php і /public/index.php .


<�Моцны> У paths.php файл, заменіце:

'app' => __DIR__.'/../app',

з:

'app' => __DIR__.'/../../yourlaravel4_base/app',

<�Моцны> У paths.php файл, заменіце:

'public' => __DIR__.'/../public',

з:

'public' => __DIR__,

<�Моцны> У paths.php файл, заменіце:

'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 усталяваны ў тэчцы на вашым сайце фактычна не падвяргаючы дадатак/ тэчкі і іншыя важныя файлы. :)

63
дададзена
Гэта было вельмі карысна!
дададзена аўтар johnnyfittizio, крыніца
На жаль, гэта не заўсёды працуе, калі ваш гаспадар робіць нейкія дурныя перапісваюць базавы матэрыял, і нават калі каранёвай каталог існуе, то вы не можаце атрымаць да яго доступ з вэб-дадатак. Гэта добры агляд розных варыянтаў, у тым ліку гэта адзін.
дададзена аўтар Robert Grant, крыніца
Проста цікава, ці будзе яна працаваць на Laravel 5? Я планую для L5
дададзена аўтар vijayrana, крыніца
Вельмі добра адказаў, дзякуй. Для майго выпадку, аднак, гэта было няпоўным рашэннем без ўкладу @TechyTimo Дарэчы, чаму гэты адказ (найбольшая колькасць галасоў выбаршчыкаў, і прыняў адказ) паказвае самы нізкі ў спісе адказаў?
дададзена аўтар Ham Sam, крыніца
@EmmanuelFiguerola Я зрабіў усё, што вы сказалі, і я атрымаў Увага: патрабуецца (/ дом/u962269517/public_html/прадавец/SwiftMailer/SWIF & ZWNJ; tmailer/Бібліятэка/swift_re & ZWNJ; quired.php): не атрымалася адкрыць паток: Няма такога файла ці каталога ў /home/u962269517/public_html/vendor/composer/autoload_real.p&zwnj, л.с на лініі 58 Фатальная памылка: патрабуецца (): Failed адкрыццё патрабуецца «/ дом/u962269517/public_html/прадавец/SwiftMailer/SwiftMailer & ZWNJ; /lib/swift_required.‌ PHP »(include_path = '/ галоўная/u962269517/public_html/прадавец/phpseclib & ZWNJ;/phpseclib/phpseclib & ZWNJ;. ::/USR/Бібліятэка/PHP') у/галоўная/u962269517/public_html /vendor/composer/autoload_real.p‌ л.з. на лініі 58
дададзена аўтар Alex Ventura, крыніца
Толькі файлы, якія я павінен змяніць, каб устаць і хто бяжыць, былі канфігурацыйны файл/app.php, паказваючы URL на размяшчэнне папкі, якая змяшчае змесціва агульных папак і шляхі /public/index.php файлаў, як прапанавана. Tricky частка ведае, колькі «../../» дадаць. Таксама не слэш пасля цытаты (да) <�б> DIR . '../як было прапанавана (няма) __ DIR __.'/.. /
дададзена аўтар Duramba, крыніца

Вы можаце выкарыстоўваць псеўданім: ня выхадкі з шырока распаўсюджанымі каталогамі ў вашай сістэме.

Пакажыце ў вашым httpd.conf або адмін-панэлі:

/mylaravel/ /path/to/laravel/public

Акрамя таго, пазначыць URL у вашым app.php Laravel ў

радок 29

'url' => 'http://yourdomain.com/mylaravel/',

У рэшце рэшт ўсталяваць RewriteBase ў вашым /public/.htaccess

RewriteBase /mylaravel/

Працуе як шарм і захоўвае структуру каталогаў у чысціні і ў кропку!

28
дададзена
І калі, напрыклад, доступ да старонкі, якія не існуе, то, што вы атрымаеце? Laravel 'Упс, падобна, што-то пайшло не так. паведамленне, памылка ўнутранага сервера або не знайшлі старонку? Таму што ён павінен вярнуць паведамленне Laravel.
дададзена аўтар paulalexandru, крыніца
Пакажыце ў вашым httpd.conf або адмін-панэлі/mylaravel// шлях/да/Laravel/публіка - Ці можаце вы сказаць мне, як гэта робіцца?
дададзена аўтар Gaurav Gupta, крыніца
Гэта падобна на фактычны адказ.
дададзена аўтар Dan, крыніца

Людзі, людзі! Няма неабходнасці празмерна ўскладняць!

(Для іншых агульных папак, такіх як HTDOCS або WWW проста замяніць public_html ў наступным з вашым адзін.)

  1. Put all your Laravel stuff in the top-level folder (so that the app folder is next to the public_html folder)
  2. Move all files from public to public_html (be sure to also move hidden files, such as .htaccess!)
  3. Delete the now empty public folder
  4. In bootstrap/path.php change

    'public' => __DIR__.'/../public', to

    'public' => __DIR__.'/../public_html',

  5. Done.
7
дададзена
Гэта не дае адказу на пытанне, а пытанне заключаецца ў тым, каб змясціць яго ў тэчцы.
дададзена аўтар Trekdrop, крыніца
Для GoDaddy Віртуальнага хостынгу: medium.com/@kunalnagar/& hellip;
дададзена аўтар PhatHV, крыніца
Гэта тое, што я раблю .. куленепрабівальныя, праўда? Калі вы не хочаце, дадатак/, каб быць бачным у агульнадаступным каталогу, не змясціць яго ў агульнадаступным каталогу!
дададзена аўтар Adam Marshall, крыніца
ооочень Coool, гэты адказ ратуе мяне шмат часу, дзякуючы браценік
дададзена аўтар Yogie Soesanto, крыніца

Пераканайцеся ў тым, каб праверыць правы доступу. Я разгортваецца праз наступнае, хоць я не рэкамендую.

Я выкарыстаў 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

Afterwards, I would receive a message like "Whoops, looks like something went wrong" (or an error depending on your debug settings). To fix this, I just had to change my permissions to 755 for my folders. reference: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel

У цэлым, я збіраюся вярнуцца і паспрабаваць арыгінальны спосаб з змененымі дазволамі, як я лічу, што гэты шлях менш бяспечнымі, і больш спадзявацца на маім хостынгу абслугоўвання кліентаў.

*****Нататка***** Гэтая каманда, відавочна, выдаляе свой public_html (таксама часам званы грамадскай або WWW) тэчкай. Вы павінны мець рэзервовую копію ўсіх файлаў у ім, таму што вы яго выдалення. Акрамя таго, вы павінны быць гатовыя прайсці праз абслугоўванне кліентаў, каб аднавіць яго. Многія паслугі хостынгу не дазваляюць вам проста ўзнавіць тэчку па сваім меркаванні.

3
дададзена
<�Код> ГТ -rf public_html/ гэта сапраўды жудасна!
дададзена аўтар Set Kyar Wa Lar, крыніца

Emmanuel адказ не працуе для мяне, але я зрабіў некаторыя змены, каб зрабіць яго працу. хоць я выкарыстаў свой вэб-корань, каб быць крыніцай праекта. там; У мяне ёсць тэчка HTDOCS ў якасці каранёвай папкі, але вы можаце мець іншыя, напрыклад, public_html, WWW або гэтак далей. Вы можаце лёгка замяніць мой HTDOCS з аднаго ў вас ёсць.

добра.

мой dircetory

root/ 
      htdocs
      .htaccess
      .override

першым я вырашыў усё залежнасці Laravel на маім лакальным хасце на вокнах з кампазітарам. пасля таго, што я зрабіў пакет ўсяго пакета ў laravel4.zip. ў маім HTDOCS я стварыць тэчку Laravel і я зрабіў загрузіць і распакаваць файл паштовага індэкса ў ім.

htdocs/
        laravel/
                 app
                 bootstrap
                 public 
                 vendors
                 ...

таму пасля таго, як я зрабіў разархіваваць файл я перанесьці ўсе ў агульнай тэчцы ў тэчку HTDOCS

htdocs/
        laravel
        packages
        .htaccess
        favicon.ico
        index.php
        robots.txt

Цяпер мы павінны перапісаць некалькі гасцінцаў ў HTDOCS/index.php і HTDOCS/Laravel/пачатковай загрузкі/paths.php

але дазваляе адкрыты HTDOCS/Laravel/самазагрузкі/paths.php. вы ўбачыце

'app' => __DIR__.'/../app',

што гэта значыць . гэта азначае, што мы стаім на HTDOCS/Laravel/бутстрапе/шляху. і там нам трэба выйсці з гэтай тэчкі ў тэчку Laravel затым збіраецца ў тэчку прыкладання. добра . гэта структура Laravel для маршрутызацыі. калі вы атрымаеце гэта права вы можаце зрабіць свой Laravel бег.

знайсці

'public' => __DIR__.'/../public',

і змяніць яго

'public' => __DIR__.'/../../htdocs',

(Просты га) з адной (../) з іх мы можам перайсці на адну тэчку. так што зараз мы знаходзімся ў тэчцы Laravel. але мы павінны быць у HTDOCS. таму мы павінны напісаць іншы (../), каб атрымаць там.

open htdocs/index.php and знайсці

require __DIR__.'/../bootstrap/autoload.php';

змяніць яго ў

require 'laravel/bootstrap/autoload.php'; 

патрабуюць з'яўляецца убудаваная функцыя PHP, таму мы будзем разглядаць яго як просты PHP. мы не сапраўды патрэбен стыль Laravel для здабывання autoload.php файла. так проста выдаліць яго і пайсці для класічнага стылю

знайсці

$app = require_once __DIR__.'/../bootstrap/start.php';

змяніць яго ў

$app = require_once 'laravel/bootstrap/start.php';
3
дададзена
Рады бачыць Laravel працуе для вас. Шляху, што гэта складана, я нават быў праект, у якім калісьці па нейкай дзіўнай прычыне мне трэба выкарыстоўваць поўныя шляху да файлаў. : /
дададзена аўтар Emmanuel Figuerola, крыніца

Калі вы спрабуеце запусціць 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

тут дзве сабой просты урокі для Вас:

Спасылка 1

Спасылка 2 </а>

2
дададзена

Калі вы хочаце, каб проста наладзіць Laravel Праект віртуальнага хостынгу і ў вас ёсць доступ да CPanel, то вы можаце зрабіць наступныя крокі, якія я затым і яна працавала добра.

Крок 1: Зрабіце паштовы або дзёгаць файл ўсёй Laravel прыкладання на вашым лакальным кампутары.

Крок 2: Перайсці да Cpanel. Загрузіць Zip/архіўны файл у тэчку public_html, а затым выняць яго. (Вы таксама можаце стварыць асобную тэчку для вашага прыкладання Laravel. Як я хачу, каб загрузіць больш аднаго прыкладання Laravel я стварыў асобны каталог для кожнага з іх, як паказана на малюнку ніжэй.)

enter image description here

Крок 3: Зараз пераходзім да «Addon дамен» і змяніць корань дакумента з названага вамі дамена. Пакажыце дамен тэчкі.

enter image description here

Цяпер праверце ваш дамен будзе перанакіроўваць да грамадскага/файлу index.php. Там няма неабходнасці змяняць якія-небудзь шляху.

1
дададзена
Гэта адзін працаваў для мяне. Важна, каб праверыць, калі бягучая версія PHP 5.6, бо астатнія прадухіліць прыкладанне Laravel ад працы ў цэлым.
дададзена аўтар Cornwell, крыніца

калі вы карыстаецеся addondomain або майстар subdomaind ў панэлі, майстар павінен папрасіць вас корань дакумента. напрыклад я хачу адон droidman.com, Майстар павінен прапанаваць мне рабіць droidman.com тэчку. на гэтым этапе сказаць майстру, каб зрабіць droidman.com/public тэчкі. затым змясціць прыкладанне ў тэчку droidman.com. Ваш гаспадар будзе глядзець на агульную тэчку;). праблема вырашана

1
дададзена

Калі вы выкарыстоўваеце сервер Apache, самы просты спосаб зрабіць гэта складаецца ў сховішча галоўнага вузла прыкладання Laravel за межамі кораня WWW (ці ў абароненай тэчцы ў WWW корані), а затым сімлінкі патрэбнай тэчкі, каб паказаць яго агульную тэчку ў Laravel

Напрыклад, я кладу Laravel ўстаноўкі ў:

/usr/local/share/myLaravel

Затым у тэчцы грамадскага WWW, стварыць сімвалічную спасылку, як так:

ln -s /usr/local/share/myLaravel/public mylaravel

Вам неабходна ўнесці некаторыя карэктывы ў вашу ўстаноўку, як пакласці ваш Rewrite падстава к/mylaravel/і пераканайцеся, што вашыя канфігурацыйныя файлы дазваляюць накладання ў базавым месцы, але гэта прасцей, чым мадыфікаваць ўсё.

0
дададзена