Utiliser le chemin d'accès de base dans Laravel 5 (Lumen)
Je suis à l'aide de laravel dans un projet. Sur ma machine locale le serveur j'ai d'accès est tout simplement
laraveltest.dev
. Quand j'ai ouvert cet URL, le projet fonctionne très bien et sans problèmes.
Cependant, quand je télécharge ce sur un serveur de test, où la substance est situé dans un sous-foder, comme ceci: laraveltest.de/test2/
. Le dossier public est à laraveltest.de/test2/public/
, mais lors de l'appel de laraveltest.de/test2/public
l'application retourne toujours une erreur 404.
J'ai pensé que cela pourrait être à cause de la chemin de la base, donc je n'ai la suite dans le bootstrap/app.php
$app = new Laravel\Lumen\Application(
realpath(__DIR__.'/../') . env('APP_BASE_PATH')
);
où env('APP_BASE_PATH')
est le sous-dossier.
Donc app->basePath()
retourne /var/www/laraveltest/test2/public
. Toutefois, lorsque maintenant ouverture
laraveltest.de/test2/public
Je suis toujours l'erreur 404 et je ne sais pas pourquoi. Ce que je fais mal?
- ce qui est dans le dossier racine? je ne voudrais pas manipuler laravel fichiers. Je pense qu'il y a peut-être une solution à l'aide htaccess
- Vous pouvez voir le dossier racine ici github.com/laravel/lumen La app.php dans le bootstrap dossier est destiné à être modifié
- La solution la plus Simple : stackoverflow.com/questions/30740023/...
Vous devez vous connecter pour publier un commentaire.
Vous ne pas besoin de changer
basePath
, sauf si vous utilisez un dossier personnalisé structure de l'application. Un peu comme ceci:Donc, dans votre cas, tout ce que vous avez à faire est de:
Vérifier .htaccess de configuration. N'server permettent
.htaccess
fichier pour remplacer un chemin spécifique de configuration?Vérifier votre
public/index.php
fichier. Modifier cette ligne:Espère que cette aide.
Supplémentaires
Si vous vous demandez comment la Lumière ne fonctionne pas dans un sous-dossier. Vous pouvez voir
Laravel\Lumen\Application::getPathInfo()
ligne1359
. Pour faire Lumen travaille dans le sous-dossier, modifier cette méthode, il suffit de faire une classe qui étend la classeLaravel\Lumen\Application
.Puis, en vous
bootstrap/app.php
, modifiez ce qui suit:Après cela, vous n'avez pas besoin de changer
public/index.php
fichier, il suffit de le laisser par défaut:$app['request']
travaillé. Cependant, mes itinéraires sont, en fait, pas de travail. La page d'index des œuvres, mais quand je vais appeler une autre page, j'obtiens une erreur 404 (pas le laravel, celle d'apache) C'est la route$app->get('/post/tag/{tag}', 'App\Http\Controllers\PostController@getPostsByTag');
qui fonctionne normalement sur un ordinateur localAllowOverride
ensemble deNone
par défaut. Il l'a changé pour le site deAll
testé avec Lumen 5.4 /apache /FPM/FastCGI:
structure de dossier:
Racine Web:
/
URL: http://www.domain.dev/api
copier des Fichiers à partir du répertoire
/lumen-api/public
à/api
changement
/api/index.php
:1) adapter le chemin vers le répertoire avec lumen bootstrap
2) fixer mal baseURL
ajouter cette après "$app = nécessitent __DIR_...." pour corriger mal baseURL de /vendor/symfony/http-fondation/Demande.php:fonction protégée prepareBaseUrl()
3) de l'échantillon
/lumen-api/routes/web.php
:4) Test
http://www.domain.dev/api
Résultat devrait être:
si vous obtenez
http://www.domain.dev/api/api
deux fois/api/api
- le correctif pour le baseURL de 2) ne fonctionne pas!Dans mon cas, j'ai déménagé .htaccess du répertoire public à la racine et créé un index.php fichier dans ma racine du projet et de ses ressemble à ceci. Si vous avez un laravel projet, vous pouvez copier ses server.php à partir de la racine et changer son nom pour index.php
index.php