Nous essayons de nous connecter avec laravel et le moteur d'application, mais nous sommes confrontés à un problème d'autorisation de stockage. Existe-t-il un moyen de modifier le chemin de stockage en chemin de stockage du moteur d'application. Nous pourrions ainsi résoudre le problème d'autorisation refusée .
Comme le moteur d'application n'a pas d'autorisation de lecture et d'écriture.
Ici, j'ai joint les détails du fichier yaml de mon application
XXX
runtime_config:
cloud_sql_instances: "eprofit-3:us-central1:eprofit-3"
env_variables:
DB_HOST: localhost DB_DATABASE: databasename DB_USERNAME: root DB_PASSWORD: password DB_SOCKET: DB_SOCKEt
## Définissez ces variables d'environnement en fonction de votre configuration CloudSQL.
#Put production environment variables here. #LOG_CHANNEL: stackdriver APP_NAME: eProfit #APP_ENV: local #APP_DEBUG : true # or false APP_LOG: errorlog APP_KEY: base64:3KcvHI2FZIT5n0BeiXynkjfvI9O7AzdOpeYhD4W4WgQ= #STORAGE_DIR: /tmp #APP_STORAGE : /tmp CACHE_DRIVER: file SESSION_DRIVER: file
beta_settings:
document_root: public
5 Réponses :
donnez l'autorisation au dossier / storage.
chmod 777 -R /storage
Oui, avec l'autorisation du dossier de stockage, il fonctionne sur ma machine locale, mais lorsque j'ai déployé du code sur le moteur d'application cloud, nous sommes confrontés à ce problème
vous devez également donner une autorisation dans le moteur d'application.
exécutez cette commande dans le terminal utilisé chmod
sudo chmod -R 0777 /srv/storage/logs/
Veuillez exécuter la commande ci-dessous
sudo chmod -R 777 /srv/storage/
Le répertoire de stockage de Laravel est généralement placé dans la racine de l'application - généralement quelque chose comme / var / www / projectname / storage
Quelle que soit votre décision, vous voulez que le stockage (et les journaux) soient envoyés volontairement ailleurs (dans votre cas / srv / storage
/ / srv / storage / logs code >
=> si cela est indésirable / par accident ou si vous souhaitez le stocker ailleurs - voir Cas 2
Quel que soit l'endroit où vous avez votre stockage - utilisateur système qui exécute l'application (généralement un serveur Web comme apache) doit avoir les autorisations d'écrire dans le répertoire de stockage et les fichiers - comment faire est une question différente, déjà répondue ici - Comment configurer les autorisations de fichiers pour Laravel? .
En gros, vous vous assurez que l'utilisateur système exécutant l'application (par exemple www-data) dispose des droits de lecture et d'écriture du répertoire de stockage et des fichiers en tant que propriétaire ou en tant que groupe (où l'utilisateur système et le propriétaire sont) (maximum 77 strong> 5 ).
Dans certains cas vous voulez placer du stockage / des journaux ailleurs, c'est assez facilement faisable dans bootstrap / app.php
avec ce code:
$ app-> useStoragePath ("/ ABSOLUTE / PATH / TO / STORAGE / NOTRAILINGSLASH ")
Cependant, ne recommande pas de faire cela avec une chaîne simple - vous devriez utiliser .env
fichier (s) pour définir le chemin de stockage dans chaque environnement et ici l'obtenir dynamiquement s'il est disponible avec
env('YOUR_STORAGE_PATH_ENV_VARIABLE)
Vous vous retrouvez donc avec quelque chose comme ça dans le fichier bootstrap / app.php
:
XXX
Et avec quelque chose comme ça dans le (s) fichier (s) .env
:
YOUR_STORAGE_PATH_ENV_VARIABLE = '/YOUR/ENVIRONMENT/SPECIFIC/STORAGE/PATH'
Avez-vous résolu ce problème avec Google App Engine? Je pense que vous ne pouvez pas définir les autorisations du moteur d'application, car tout est protégé en écriture.
Avez-vous résolu ce problème? J'ai le même ...
N'utilisez jamais 777 - cela évite simplement le vrai problème ... J'ai rencontré un problème avec l'application déployée qui fonctionnait réellement dans
/ var / www / myapp /
mais les journaux étaient à tort essayer d'être placé dans/ srv / ...
au lieu de/ var / ...
ce qui semble être votre cas aussi :)Cependant, il peut s'agir d'un problème d'autorisation - dans ce cas, vous devez configurer correctement vos autorisations - maximum 775 - et assurez-vous que ce qui exécute l'application (généralement un serveur Web comme apache) l'exécute en tant qu'utilisateur qui est dans le même groupe que le propriétaire des fichiers (s'il n'est pas propriétaire des fichiers lui-même).
Duplicata de stackoverflow.com/questions/54111512/... ou vice-versa