[LINUX] [Environnement de développement] Si vous ne pouvez pas migrer php artisan avec l'opération non autorisée, vérifiez les autorisations!

permission.png

Salut, c'est Takafumi.

Lorsque le développement du système dans lequel je suis actuellement impliqué était terminé, j'ai pensé: "Je suis sur le point de préparer l'environnement de test" et j'ai essayé d'exécuter la commande php aritisan migrate pour créer une table.

Operation not permitted

"Je ne peux pas migrer!"

L'article d'aujourd'hui résout le problème de l'impossibilité de migrer dans un environnement intermédiaire préparé à l'aide d'EC2 d'AWS!

Solution

Devenez l'utilisateur propriétaire et donnez l'autorisation d'écriture au groupe propriétaire

Ce que j'ai fait

1. Lisez d'abord le message d'erreur.

UnexpectedValueException  : The stream or file "/var/www/mcfhfs/storage/logs/laravel-2019-11-20.log" could not be opened: failed to open stream: Permission denied
  at /var/www/mcfhfs/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:111
    107|             restore_error_handler();
    108|             if (!is_resource($this->stream)) {
    109|                 $this->stream = null;
    110|
  > 111|                 throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url));
    112|             }
    113|         }
    114|
    115|         if ($this->useLocking) {
  Exception trace:
  1   Monolog\Handler\StreamHandler::write()
      /var/www/mcfhfs/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php:120
  2   Monolog\Handler\RotatingFileHandler::write()
      /var/www/mcfhfs/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php:42
  Please use the argument -v to see more details.

En regardant le message d'erreur, il dit "Vous n'avez pas l'autorisation d'écriture sur le fichier journal." Apparemment, vous n'avez pas l'autorisation d'écriture sur le fichier journal.

2. Vérifier et modifier les autorisations du fichier journal

Quand j'ai vérifié les permissions avec ls -la, c'était rw ---- r ---- r --.

Dans ce cas, il s'agit de "propriétaire utilisateur (lecture / écriture) - groupe propriétaire (lecture) - autre utilisateur (lecture)". Je ne suis pas l'utilisateur propriétaire, j'appartiens au groupe propriétaire, donc je n'ai que l'autorisation de lecture.

"Alors, pourquoi ne pas ajouter l'autorisation d'écriture (w) aux autorisations du groupe propriétaire?"

Alors lancez chmod 664 laravel-2019-11-20.log. En conséquence, «Opération non autorisée» a été affiché.

Après examen, il semble que les autorisations de fichier ne peuvent être modifiées que par le propriétaire du fichier. (Référence: https://marunouchi-tech.i-studio.co.jp/3341)

3. Recréez le fichier

"Alors, pourquoi ne deviens-je pas le propriétaire du fichier?"

Supprimez le fichier journal correspondant et créez-le à nouveau. Après avoir confirmé que le propriétaire du fichier est vous-même, exécutez à nouveau la migration.

php artisan migrate:fresh
Dropped all tables successfully.
Migration table created successfully.

"Succès!"

4. Modifiez les autorisations afin de pouvoir également écrire à partir du serveur Web

Je pensais que c'était la solution, et lorsque j'ai essayé d'afficher la page en me connectant à l'environnement de test à partir du navigateur, le message «Vous n'avez pas l'autorisation d'écriture pour le fichier journal» était à nouveau affiché. Apparemment, il est nécessaire de donner l'autorisation d'écriture du serveur Web.

chmod 664 laravel-2019-11-20.log
ls -la
-rw-rw-r--

Maintenant que l'utilisateur propriétaire et le groupe propriétaire ont l'autorisation d'écriture, accédez à nouveau au site. Il a été affiché en toute sécurité!

■ Résumé

-Les autorisations ne peuvent être modifiées que par le propriétaire du fichier. ・ N'oubliez pas d'accorder l'autorisation d'écriture du serveur Web! -Vérifiez les autorisations lorsque "Opération non autorisée" ou "Permission refusée"!

Je n'ai jamais eu d'erreur avec les autorisations, donc je suis content d'avoir appris cela. Il est sûr d'obtenir l'autorisation refusée avec cela. Eh bien!

Recommended Posts

[Environnement de développement] Si vous ne pouvez pas migrer php artisan avec l'opération non autorisée, vérifiez les autorisations!
swapon failed: Que faire si vous vous fâchez contre l'opération non autorisée
Préparez l'environnement de développement avec anyenv
À propos de l'environnement de développement que vous utilisez
nb_conda_kernels est recommandé si vous souhaitez entrer dans l'environnement virtuel avec jupyter