Ich bin neu bei Laravel und finde dieses Framework großartig.

Artisan ist auch großartig, hat aber ein kleines Problem damit.

Nehmen wir an, ich erstelle mit Artisan einen neuen Controller wie diesen

php artisan make:controller Test

In app / Http / Controllers wird eine neue Datei mit dem Namen Test angezeigt, und die Berechtigung für diese Datei lautet root: root

Wenn ich diese Datei mit meinem Editor über FTP bearbeiten möchte, kann ich das nicht, da ich nicht als root angemeldet bin.

Gibt es Möglichkeiten, Artisan anzuweisen, beispielsweise Dateien mit der WWW-Datengruppe zu erstellen (ohne einen Befehl chown auszuführen)?

1
Ashraam 23 Dez. 2015 im 14:32

3 Antworten

Beste Antwort

Da Sie Root-Shell-Zugriff haben, führt der folgende Befehl einen weiteren Befehl mit dem Benutzer www-data aus.

sudo -u www-data php artisan make:controller Test

Ersetzen Sie www-data durch den Benutzernamen, unter dem Ihr Webserver arbeitet, oder den Benutzernamen, mit dem Sie sich beim FTP-Dienst anmelden.

Wenn Sie dies tun, gehört der Controller www-data, was Sie möchten.

Hinweis: Führen Sie niemals Befehle aus, die aus dem Internet kopiert wurden, ohne genau zu wissen, was sie tun, insbesondere in einer Root-Shell. In diesem Fall weist der Parameter -u sudo an, den Befehl als bestimmten Benutzer und nicht als Benutzer root auszuführen. Aus der Manpage:

-u user, --user=user
             Run the command as a user other than the default target user (usually root ). The user may be
             either a user name or a numeric user ID (UID) prefixed with the ‘#’ character (e.g.  #0 for UID
             0).  When running commands as a UID, many shells require that the ‘#’ be escaped with a backslash
             (‘\’).  Some security policies may restrict UIDs to those listed in the password database.  The
             sudoers policy allows UIDs that are not in the password database as long as the targetpw option
             is not set.  Other security policies may not support this.
10
kalatabe 23 Dez. 2015 im 11:51

Ich weiß, dass dies ein sehr alter Beitrag ist, aber ich würde auch jedem raten, Ihre Laravel-Dateien über FTP zu bearbeiten. Ich habe das in meinen Tagen vor dem Laravel gemacht und es endete NIE gut.

Das Bearbeiten über FTP kann alle Arten von Problemen verursachen - das Unterbrechen der Verbindung während der Bearbeitung ist das geringste. Sicherheits- und Live-Entwicklungsfehler sind ein viel größeres Problem.

Entwickeln Sie in Ihrer lokalen oder Entwicklungsumgebung, legen Sie ein Commit / Push für Git fest und leiten Sie dann entweder eine Pipeline an Ihren Server weiter oder bearbeiten Sie Ihre FTP-Uploads und Bereinigungen nachträglich. Pipelines sind die beste Wahl, wenn Ihr Host sie zulässt. Wir verwenden Atlassian BitBucket für unsere, aber die Einrichtung und Bereitstellung sollte für die meisten Hosts relativ ähnlich sein. Wenden Sie sich an Ihren Host, um Dokumentation zur Einrichtung der Pipeline zu erhalten:

https://www.atlassian.com/continuous-delivery/tutorials/bitbucket-pipelines

Es gibt auch einige Online-Tutorials für das Pipelining direkt zu FTP (wenn Sie sich beispielsweise auf einem gemeinsam genutzten Host befinden):

https://www.savjee.be/2016/06/Deploying-website-to-ftp-or-amazon-s3-with-BitBucket-Pipelines/

2
Dan Kaufman 1 Mai 2019 im 16:48

Da Sie einen Befehl vom Root-Benutzer ausgeführt haben, versuchen Sie, den Befehl von dem Benutzer auszuführen, den Sie zum Bearbeiten des Projekts über FTP verwenden.

1
xAoc 23 Dez. 2015 im 11:37