1
votes

"Le flux ou le fichier" /srv/storage/logs/laravel-2019-01-09.log "n'a pas pu être ouvert: échec de l'ouverture du flux: système de fichiers en lecture seule"

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


4 commentaires

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


5 Réponses :


0
votes

donnez l'autorisation au dossier / storage.

chmod 777 -R /storage


2 commentaires

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.



0
votes

exécutez cette commande dans le terminal utilisé chmod

sudo chmod -R 0777 /srv/storage/logs/


0 commentaires

0
votes

Veuillez exécuter la commande ci-dessous

sudo chmod -R 777 /srv/storage/


0 commentaires

1
votes

TL; DR - emplacement de stockage volontairement différent => GOTO Cas 2

Cas 1: Vous voulez que le stockage / les journaux soient placés dans /srv/...

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 ).

NE JAMAIS DONNER 777 PERMISSIONS (PROBLÈMES DE SÉCURITÉ)

Cas 2: changer intentionnellement l'emplacement de stockage / des journaux

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'

0 commentaires

0
votes

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.


0 commentaires