[LINUX] [Entwicklungsumgebung] Wenn Sie PHP Artisan nicht migrieren können, während Operation nicht zulässig ist, überprüfen Sie die Berechtigungen!

permission.png

Hallo, das ist Takafumi.

Als die Entwicklung des Systems, an dem ich derzeit beteiligt bin, abgeschlossen war, dachte ich: "Ich bin dabei, die Staging-Umgebung vorzubereiten" und versuchte, den Befehl "php aritisan migrate" auszuführen, um eine Tabelle zu erstellen.

Operation not permitted

"Ich kann nicht migrieren!"

Der heutige Artikel löst das Problem, dass in einer mit EC2 von AWS erstellten Staging-Umgebung keine Migration möglich ist!

Lösung

Werden Sie der besitzende Benutzer und erteilen Sie der besitzenden Gruppe eine Schreibberechtigung

Was ich getan habe

1. Lesen Sie zuerst die Fehlermeldung.

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.

In der Fehlermeldung heißt es: "Sie haben keine Schreibberechtigung für die Protokolldatei." Anscheinend haben Sie keine Schreibberechtigung für die Protokolldatei.

2. Überprüfen und ändern Sie die Berechtigungen für Protokolldateien

Als ich die Berechtigungen mit ls -la überprüfte, war es rw ---- r ---- r --.

In diesem Fall ist es "Benutzer besitzen (Lesen / Schreiben) - Eigentümergruppe (Lesen) - anderer Benutzer (Lesen)". Ich bin nicht der besitzende Benutzer, ich gehöre zur besitzenden Gruppe, daher habe ich nur Leseberechtigung.

"Warum also nicht die Berechtigungen der besitzenden Gruppe um eine Schreibberechtigung (w) erweitern?"

Führen Sie also chmod 664 laravel-2019-11-20.log aus. Infolgedessen wurde "Betrieb nicht zulässig" angezeigt.

Bei der Prüfung scheint es, dass Dateiberechtigungen nur vom Dateibesitzer geändert werden können. (Referenz: https://marunouchi-tech.i-studio.co.jp/3341)

3. Erstellen Sie die Datei neu

"Warum werde ich dann nicht der Besitzer der Datei?"

Löschen Sie die entsprechende Protokolldatei und erstellen Sie sie erneut. Führen Sie die Migration erneut aus, nachdem Sie bestätigt haben, dass Sie der Dateieigentümer sind.

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

"Erfolg!"

4. Ändern Sie die Berechtigungen, damit Sie auch vom Webserver aus schreiben können

Ich dachte, dies sei die Lösung, und als ich versuchte, die Seite durch Herstellen einer Verbindung zur Staging-Umgebung über den Browser anzuzeigen, wurde erneut die Meldung "Sie haben keine Schreibberechtigung für die Protokolldatei" angezeigt. Anscheinend ist es notwendig, eine Schreibberechtigung vom Webserver zu erteilen.

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

Nachdem der besitzende Benutzer und die besitzende Gruppe über Schreibrechte verfügen, greifen Sie erneut auf die Site zu. Es wurde sicher angezeigt!

■ Zusammenfassung

-Permissionen können nur vom Dateibesitzer geändert werden. ・ Vergessen Sie nicht, die Schreibberechtigung vom Webserver zu erteilen! -Überprüfen Sie die Berechtigungen, wenn "Vorgang nicht zulässig" oder "Berechtigung verweigert"!

Ich hatte noch nie einen Fehler mit meinen Berechtigungen, daher bin ich froh, dass ich das erfahren habe. Es ist sicher, dass die Berechtigung damit verweigert wird. Na dann!

Recommended Posts

[Entwicklungsumgebung] Wenn Sie PHP Artisan nicht migrieren können, während Operation nicht zulässig ist, überprüfen Sie die Berechtigungen!
Swapon fehlgeschlagen: Was tun, wenn Sie sich über eine Operation ärgern, die nicht zulässig ist?
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
Informationen zu der von Ihnen verwendeten Entwicklungsumgebung
nb_conda_kernels wird empfohlen, wenn Sie die virtuelle Umgebung mit jupyter betreten möchten