web-dev-qa-db-fra.com

Comment installer Laravel 4 dans un sous-dossier Web Host sans exposer publiquement / app / folder?

Je me demandais si l’un d’entre vous connaissait un moyen d’installer Laravel 4 dans un sous-dossier hôte Web/tout en n'exposant pas le dossier/app/et d’autres fichiers sensibles à la partie du fichier accessible publiquement. Hôte.

L'idée est que je serais capable d'accéder à http://mydomain.com/mylaravel/ pour pouvoir utiliser Laravel, mais en même temps, je veux éviter que quiconque fasse quelque chose comme aller à http://mydomain.com/app/ ou http://mydomain.com/mylaravel/app/ et être capable de voir mes fichiers de configuration et autre code.

60

Alors j'ai compris comment faire cela. Je vais expliquer avec un exemple.

Supposons que vous soyez un domaine, http://domain.com . Voici un exemple de la structure que vous pourriez utiliser:

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/ Est la racine de la partie accessible au public de vos fichiers d'hébergement Web. Vous voulez créer un sous-dossier dans /public_html/ (Dans ce cas, /public_html/yourlaravel4/). Dans ce sous-dossier, vous allez stocker tous les contenus du dossier Laravel 4 public/.

Maintenant, pour le reste des fichiers. Vous devez aller à la racine de vos fichiers d’hébergement Web, c’est-à-dire que vous voulez être au niveau domain.com/, Donc pouvoir voir public_html/ Et quelques autres dossiers. Ensuite, nous devons créer un dossier ici, où Laravel 4 seront stockés. Dans ce cas, il s’agit de domain.com/yourlaravel4_base/. À l’intérieur de yourlaravel4_base/, Nous devons stocke chaque fichier et dossier existant dans le répertoire de base Laravel 4. Ce serait app/, bootstrap/, vendor/, server.php, Etc. Tout SAUF le dossier /public/, Dont vous avez déjà enregistré le contenu dans public_html/yourlaravel4/.

Enfin, nous devons éditer 2 fichiers: les fichiers /bootstrap/paths.php Et /public/index.php De Laravel.


Dans le fichier paths.php, Remplacez:

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

avec:

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

Dans le fichier paths.php, Remplacez:

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

avec:

'public' => __DIR__,

Dans le fichier paths.php, Remplacez:

'base' => __DIR__.'/..',

avec:

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

Dans paths.php, Remplacez:

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

avec:

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

Dans index.php, Remplacez:

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

avec:

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

Dans index.php, Remplacez:

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

avec:

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

Télécharger les modifications. Vous devriez maintenant pouvoir avoir Laravel 4 installé dans un sous-dossier de votre site Web sans exposer réellement le dossier app/ Et d’autres fichiers sensibles. :)

64

Vous pouvez utiliser un alias: no hankey-pankey avec des répertoires répandus sur votre système.

Spécifiez dans votre httpd.conf ou votre panneau d'administration:

/mylaravel/ /path/to/laravel/public

De plus, spécifiez l'URL dans le fichier app.php de votre Laravel

Ligne 29

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

Finalement, définissez le RewriteBase dans votre /public/.htaccess

RewriteBase /mylaravel/

Fonctionne comme un charme et garde la structure de votre répertoire propre et précise!

28
Tom

Les gens, les gens! Pas besoin de trop compliquer les choses!

(Pour d'autres dossiers publics, tels que htdocs ou www, remplacez simplement public_html Par ce qui suit.)

  1. Placez tous vos fichiers Laravel dans le dossier de niveau supérieur (de sorte que le dossier app soit situé à côté du dossier public_html))
  2. Déplacez tous les fichiers de public vers public_html (Veillez également à déplacer les fichiers cachés, tels que .htaccess!)
  3. Supprimer le dossier public maintenant vide
  4. Dans bootstrap/path.php, Changez

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

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

  5. Terminé.
7
sisou

la réponse d'Emmanuel ne fonctionne pas pour moi mais j'ai fait quelques changements pour le faire fonctionner. Bien que j'ai utilisé ma racine web pour être la source d'un projet. le voilà ; J'ai le dossier htdocs comme dossier racine, mais vous pouvez en avoir d’autres, tels que public_html, www ou autres. vous pouvez facilement remplacer mon htdocs par celui que vous avez.

bien .

mon dircetory

 racine/
 htdocs 
 .htaccess 
 .override

d'abord, j'ai résolu toutes les dépendances de laravel sur mon hôte local sous Windows avec composer.. après cela, j'ai emballé le paquet entier dans laravel4.Zip. dans mon htdocs i créez un dossier laravel) et j’ai téléchargé et décompressé le fichier Zip qu’il contient.

htdocs /
 laravel /
 app 
 bootstrap 
 public 
 vendeurs 
 ...

donc après avoir décompressé le fichier, je déplace tout dans un dossier public dans un dossier htdocs

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

maintenant nous devons réécrire quelques chemins dans htdocs/index.php et htdocs/laravel/bootstrap/paths.php

mais permet d'ouvrir htdocs/laravel/bootstrap/paths.php. tu verrais

'app' => __DIR __. '/ ../app',

qu'est-ce que ça veut dire . cela signifie que nous sommes à htdocs/laravel/bootstrap/path. et là pour nous devons quitter ce dossier à laravel dossier puis aller au dossier de l'application. ok. c'est la structure du laravel pour le routage. si vous obtenez ce droit vous pouvez faire votre laravel exécuter.

trouver

'public' => __DIR __. '/ ../public',

et le changer en

'public' => __DIR __. '/ ../../htdocs',

(ha simple) avec un (../) de ceux-ci nous pouvons monter un dossier. Nous en sommes maintenant au dossier laravel. mais nous devons être dans htdocs. Nous devons donc écrire un autre (../) pour y arriver.

ouvrez htdocs/index.php et trouvez

require __DIR __. '/ ../bootstrap/autoload.php';

changer en

require 'laravel/bootstrap/autoload.php'; 

require est une fonction php intégrée, nous allons donc la traiter comme un simple php. nous n’avons pas vraiment besoin du style laravel pour récupérer le fichier autoload.php. Il suffit donc de le supprimer et d’opter pour le style classique

trouver

$ app = require_once __DIR __. '/ ../bootstrap/start.php';

changer en

$ app = require_once 'laravel/bootstrap/start.php';
3
Hassan Gilak

Si vous essayez d’exécuter Laravel 5.1 dans un espace d’hébergement partagé et que toutes les réponses ci-dessus semblent un peu différentes de la réalité Laravel fichiers/dossiers ou vous cherchez comment mettre votre laravel 5/5.1 dans un sous-répertoire de votre espace d'hébergement partagé afin que vous puissiez y accéder comme ceci:

http://mywebsite.com/mylaravel/

Donc, cette réponse est pour vous, tout d'abord assurez-vous de rencontrer

Laravel 5.1 exigences:

- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL

voici deux tutoriels faciles pour vous:

lien 1

lien 2

2

Si vous voulez simplement installer Laravel Projet sur l’hébergement partagé et que vous disposez d’un accès cPanel, vous pouvez suivre les étapes que j’ai suivies et qui ont bien fonctionné.

Étape 1: Créez un fichier Zip ou tar contenant l’ensemble de votre Laravel sur votre ordinateur local.

Étape 2: Allez à Cpanel. Téléchargez le fichier Zip/tar dans le répertoire public_html, puis extrayez-le. (Vous pouvez également créer un dossier séparé pour votre application laravel. Comme je veux télécharger plusieurs applications Laravel, j'ai créé un répertoire séparé pour chacune d'elles, comme indiqué dans l'image ci-dessous.)

enter image description here

Étape 3: Maintenant, allez dans 'Addon Domain' et changez la racine du document de votre domaine spécifié. Pointez le domaine sur le dossier public.

enter image description here

Maintenant, vérifiez que votre domaine sera redirigé vers le fichier public/index.php. Il n'y a pas besoin de changer les chemins.

1
Sumit Patil

si vous utilisez l’assistant addondomain ou subdomaind de votre panneau, l’assistant doit vous demander le document racine. par exemple, je veux addon droidman.com, le magicien devrait me suggérer de créer un dossier droidman.com. à cette étape, indiquez à l’assistant de créer le dossier droidman.com/public. puis placez votre application dans le dossier droidman.com. votre hôte examinera le dossier public;). problème résolu

1
Hassan Gilak

Si vous utilisez un serveur Apache, le moyen le plus simple de le faire est d’héberger votre application Laravel en dehors de la racine www (ou dans un dossier protégé dans la racine www)), puis créez un lien symbolique vers le fichier souhaité. sous-dossier pour pointer le dossier public dans laravel

Par exemple, je place mes installations laravel dans:

/usr/local/share/myLaravel

Ensuite, dans votre dossier public www, créez un lien symbolique ainsi:

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

Vous devrez faire quelques ajustements dans votre installation, comme mettre votre base de réécriture dans/mylaravel/et vous assurer que vos fichiers de configuration autorisent les remplacements à l’emplacement de base, mais cela est plus simple que de tout modifier.

0
Troy