chmod permission denied

Irgendwelche Probleme mit XAMPP für Mac OS X? Dann ist hier genau der richtige Ort um nachzufragen.

chmod permission denied

Postby waggs » 02. January 2018 19:18

Hallo zusammen,
ich hab eigentlich nix großes vor. Ich will mit PHP ne Datei auf meinen Server schreiben:

Code: Select all
$pfad = 'hier/hin';
chmod($pfad, 0777);
$datei = fopen('hier/hin/test.txt', 'w');
fwrite($datei, 'Hallo Welt!');
fclose($datei);
chmod('hier/hin/test.txt', 0755);
chmod($pfad, 0755);


Leider wirft dieser Code diverse Fehlermeldungen:
  • Warning: chmod(): Operation not permitted
  • Warning: fopen(hier/hin/test.php): failed to open stream: Permission denied
  • Warning: fwrite() expects parameter 1 to be resource, boolean given
  • Warning: fclose() expects parameter 1 to be resource, boolean given
  • Warning: chmod(): Operation not permitted in
  • Warning: chmod(): Operation not permitted in

Die dritte und vierte Warnung ist die logische Folge auf die zweite. Die könnte ich wegbekommen, indem ich allen Schreibrechte auf den Ordner einräume. Das möchte ich aber nicht, weil das eigentlich chmod übernehmen soll. Ich verwende XAMPP lediglich zur Entwicklung, die Software läuft nachher auf einem anderen Server und da brauche ich chmod - da funktioniert das sogar genau so, aber ich möchte nicht jedesmal zum Testen die ganze Seite hochladen, das muss sich doch auch irgendwie in XAMPP einstellen lassen.

Was ich bisher probiert habe:
  • Ordner, Unterordner und enthaltene Dateien im XAMPP-Ordner für alle les- und schreibbar machen (Datei wird erstellt, chmod wird immernoch nicht akzeptiert, nach ner Weile verabschiedet sich MySQL weil es mit den neu vergebenen Rechten nicht klar kommt)
  • Meinen Projektordner im Ordner htdocs für alle les- und schreibbar machen (Datei wird erstellt, chmod wird immernoch nicht akzeptiert)
  • Im Apache Config-File User und Gruppe verändert in den verschiedensten Variationen (ich in Gruppe daemon, ich in Gruppe admin) kein Effekt auf chmod
  • Im Appache Config-File den folgenden Punkt verändert:
    Code: Select all
    # Deny access to the entirety of your server's filesystem. You must
    # explicitly permit access to web content directories in other
    # <Directory> blocks below.
    #
    <Directory />
        AllowOverride All
        Require all granted
    </Directory>

    da stand vorher none und denied
  • Ich hab mir auch die php.ini angesehen, aber da wollte ich nicht zu viel dran rumspielen, um nix kaputt zu machen.

Ich vermute mal der Schlüssel liegt entweder im config-file von apache oder in der php.ini.
Wäre euch dankbar für nen Tipp.

Viele Grüße und schonmal Danke!
Waggs

PS: Ich verwende XAMPP 7.2.0 auf MacOS High Sierra
waggs
 
Posts: 3
Joined: 02. January 2018 18:58
XAMPP version: 7.2.0
Operating System: MacOS High Sierra

Re: chmod permission denied

Postby Nobbie » 03. January 2018 11:22

Apache läuft unter einer UserId (wahrscheinlich "daemon" unter OSX), die nicht genügend Rechte besitzt, "chmod" auf Dateien auszuüben, die nicht dem User daemon gehören. Das ist das Problem. Das bekommst Du auch nicht gelöst unter Apache, dazu müßtest Du entweder Apache als Admin (bzw. root) laufen lassen (das wird nicht empfohlen) oder doch die Dateirechte so setzen, dass jeder sie verändern darf (aber selbst dann wird chmod wahrscheinlich scheitern).

Du mußt vorher auf Betriebssystemebene die notwendigen Rechte setzen und/oder Apache als anderen User laufen lassen. Es ist nicht möglich, dass Apache einfach so überall Dateien hinschreiben und verändern kann (das ist auch klar, denn dann könnte das jeder Prozess eines beliebigen Users). Ich habe mir selbst (unter Linux) die Xampp Umgebung so eingerichtet, dass ich einen User xampp im Betriebssystem eingerichtet habe, habe Apache neu konfiguriert und lasse ihn auch vom User xampp ausführen (das wird in httpd.conf mit der Anweisung "User ...." festgelegt) und habe unter htdocs alle Dateien an den User Xampp vergeben (rekursive alles, was da herumfliegt, inkl. htdocs selbst). Und dann darf Apache im htdocs Ordner machen, was er will.

Dein Versuch, mit der Require Klausel das Problem zu lösen, scheitert daran, dass das falsche Kontext ist. Zum einen ist diese Anweisung für PHP unwirksam, PHP greift direkt auf Dateien zu, nicht via Apache (aber mit derselben UserId daemon bzw. xampp, wenn Du es anpasst), zum anderen ist diese Konfiguration eine andere Ebene, damit wird gesteuert, ob Apache "an sich" bei HTTP Zugriffen auf dieses Verzeichnis zugreifen darf (das ist quasi ein zusätzlicher Schutz), aber wenn das Betriebssystem nicht erlaubt, dass der User daemon da etwas ändern darf, dann hilft alles nichts, dann scheitert jeder Zugriff, egal was da bei Require steht.

P.S.: Genau genommen hat das Problem eigentlich nichts mit Xampp oder Apache an sich zu tun (Apache ist ein Prozess wie jeder andere auch); das ist ein reines Verständnisproblem, wie das Rechtemanagement unter OSX (bzw. Linux) funktioniert. Der einzige Schnittpunkt zu Apache ist die User Anweisung, mit welcher UserID Apache ausgeführt wird. Aber die ganze Logik, wer wieso und was schreiben darf und wer nicht, das hat mit Xampp nichts zu tun.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: chmod permission denied

Postby waggs » 03. January 2018 16:46

Hallo Nobbie,

danke für deine Antwort. Ja Apache ist auf daemon:daemon eingestellt, aber wie schon beschrieben, auch damit hab ich etwas rumgespielt. Vermutlich aber nicht vollständig. Was du schreibst leuchtet ein und die Idee mit dem zusätlichen Benutzer find ich auch gut. Hab ich ausprobiert:

Code: Select all
<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch. 
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User xampp
Group admin
</IfModule>


Ich habe im OS den Nutzer xampp angelegt, und die obige Änderung in der Apache Config vorgenommen. xampp ist jetzt Besitzer von htdocs und darf lesen und schreiben. Leider ist dadurch ein neues Problem entstanden. Was die Dateierstellung angeht, kann ich noch nix sagen, aber jetzt können keine Sessioncookies mehr erstellt werden:

  • session_start(): open(/Applications/XAMPP/xamppfiles/temp//sess_c530c606456c546dfc2a0f4cdb13ee01, O_RDWR) failed: Permission denied (13)

Also habe ich einfach mal den ganzen XAMPP-Ordner dem Benutzer xampp übergeben. Dann lässt sich auch die Datei schreiben. Nur: Nach einem Neustart von XAMPP lässt sich keine Verbindung zur Datenbank mehr herstellen. Bei einem Aufruf von PHPmyadmin wird der folgende Fehler gemeldet:

Code: Select all
#2002 - Connection refused — Der Server antwortet nicht (evtl. ist der Socket des lokalen MySQL-Servers nicht korrekt konfiguriert).


Ich nehme mal an, dass ich noch irgendwo einstellen muss, dass die Datenbanken auch vom Benutzer xampp:admin kontaktiert werden müssen, weil ja der gesamte XAMPP-Ordner jetzt diesem Benutzer gehört. Im Config-File der MySQL-Database hab ich da aber nix gefunden.

Edit: Auch nachdem ich die ursprünglichen Rechte wiederhergestellt hatte, lief die MySQL-Datenbank trotzdem nicht mehr.
waggs
 
Posts: 3
Joined: 02. January 2018 18:58
XAMPP version: 7.2.0
Operating System: MacOS High Sierra

Re: chmod permission denied

Postby Nobbie » 03. January 2018 17:33

waggs wrote:Also habe ich einfach mal den ganzen XAMPP-Ordner dem Benutzer xampp übergeben


EInfach mal alles kaputt machen... (s.u.). So funktioniert Rechtemanagement nicht. Da laufen doch auch noch vollkommen andere Prozesse als nur Apache.

waggs wrote:Ich nehme mal an, dass ich noch irgendwo einstellen muss, dass die Datenbanken auch vom Benutzer xampp:admin kontaktiert werden müssen, weil ja der gesamte XAMPP-Ordner jetzt diesem Benutzer gehört. Im Config-File der MySQL-Database hab ich da aber nix gefunden.

Edit: Auch nachdem ich die ursprünglichen Rechte wiederhergestellt hatte, lief die MySQL-Datenbank trotzdem nicht mehr.


Nein. Auch falsch.

Erst einmal: einfach nur den temp Ordner mit chmod 0777 für alle schreibbar machen (und sonst nichts, nicht mit Atombomben auf Spatzen schießen und das gesamte Xampp Projekt verbiegen). Und dann sollte es auch schon laufen. Das Problem ist MySQL bei Dir, das läuft (genau wie Apache) auch mit einer eigenen UserID (wahrscheinlich mit "mysql" als User) und jetzt hast Du die Datenbanken unterm Hintern weggezogen, weil Du die Verzeichnisse alle weggenommen hast. Apache und MySQL haben NICHTS miteinander zu tun. Der User xampp ist NUR für Apache gedacht.

P.S.: Group Admin sieht auch nach keiner guten Idee aus; ich würde da eine stinknormale Standardgruppe nehmen (entweder xampp als Gruppe, oder eine Gruppe "users" oder so, was es halt schon gibt) oder so lassen (wie?! - ich habe kein OSX) wie es war. Aber nicht mit übertriebenen Rechten an Apache gehen, das ist nur ein Sicherheitsproblem. Wenn irgendwann mal WordPress mit seinen furchtbaren Plugins (der unsicherste Wahnsinn, den ich je gesehen habe) auf Deinen Rechner soll, kann es sich furchtbar rächen, wenn Apache zuviel darf...
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: chmod permission denied

Postby waggs » 04. January 2018 16:32

Hallo Nobbie,

vielen Dank für deine Geduld mit mir! Ich glaube es ist rausgekommen, dass ich noch nicht viel mit Zugriffsrechten zutun hatte. Tut mir leid, wenn ich mich da sehr dämlich angestellt hab. Dein Vorschlag funktioniert auf jeden Fall. Danke!

Viele Grüße
Waggs
waggs
 
Posts: 3
Joined: 02. January 2018 18:58
XAMPP version: 7.2.0
Operating System: MacOS High Sierra

Re: chmod permission denied

Postby Nobbie » 04. January 2018 21:43

waggs wrote:Ich glaube es ist rausgekommen, dass ich noch nicht viel mit Zugriffsrechten zutun hatte. Tut mir leid, wenn ich mich da sehr dämlich angestellt hab.


Das eigentliche Problem ist das effiziente Marketing von Apple. Die lügen natürlich das Blaue vom Himmel herunter, wenn sie behaupten, bei Apple würde einfach immer alles so einfach sein und würde immer laufen und überhaupt wäre OSX das beste und tollste Betriebssystem der Welt und alles andere wäre nichts dagegen.

Das ist natürlich totaler Müll und dient einzig und allein der Tatsache, die heftig überzogenen Preise zu rechtfertigen. Immerhin hat es Apple mit diesem Marketing geschafft, eine wahre Fangemeinde zu bekommen, obwohl genau diese Klientel sich meistens dadurch auszeichnet, überhaupt nicht die geringste Ahnung von Betriebssystemen und Einbettung in Hardware zu besitzen. Das ist im Prinzip nichts wirklich schlimmes, Marketing und Werbung gehört zu unserem Alltag dazu, aber an solchen Problemen wie Deinem erkennen die User dann auf die harte Tour, dass das Apple Gesülze schlicht gelogen ist. Natürlich ist es überhaupt nicht super einfach und geht wie von alleine, eine etwas kompliziertere Software mit den notwendigen Rechten auszustatten und zu installieren. Das ist Expertenwissen, egal ob OSX, ob WIndows oder Linux. Aber Apple will ja auch noch die eingekaufte Hardware überteuert verkaufen, deswegen müssen sie einen entsprechenden Status vorweisen, den sie aber im Prinzip nicht besitzen.

Ich selbst betreibe hier u.a. ein Laptop mit gutem IPS Monitor und 17,3 Zoll, dazu eine 128GB SSD plus 1,5TB HDD, 8GB RAM und alles unter Linux MInt. Linux ist nicht nur sehr stabil, sondern es ist auch die Entwicklungsplattform von Apache, PHP und MySQL (MariaDB). Das Betriebssystem OSX ist eine Linux Variante und erfordert die gleichen Kenntnisse, wie für den Betrieb von Linux notwendig ist. Mein Rechner trägt nicht zu Apples enormer Gewinnmarge bei, ich habe für alles zusammen ca. 650,-€ bezahlt. Dafür bekomme ich bei Apple allenfalls ein größeres iPad.

Deswegen ist das nicht Deine "Dämlichkeit", sondern die vollkommen normale Unkenntnis, wenn man sich zum ersten Mal mit diesen Dingen beschäftigt. Nur rechnet eben der typische Apple Anhänger überhaupt nicht damit, sich jemals mit solchen Dingen beschäftigen zu müssen. Dem Marketing sei Dank. Aber dafür hast Du einen Haufen Geld an Apple überwiesen, weil sie Dich glauben machen, Du hättest das einfachste und beste OS der Welt auf Deinem Rechner. Das ist platt gelogen. Es ist zwar ein gutes OS, aber nichts besonderes. Jede Linux Distribution ist überlegen, denn Linux ist eine Obermenge zu OSX und unterstützt nicht nur eine gigantische Menge kostenloser Softwareprodukte, sondern auch die manngifaltigsten Varianten an Hardware. OSX ist beschränkt auf die paar Geräte, die Apple einkauft und in ihre Rechner einbaut. Warum erkennen das nur so wenige Anwender?
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: chmod permission denied

Postby petergre » 30. September 2018 12:16

Hallo,
ich habe das Gleiche Problem und versuche schon seit Stunden das zu lösen. Ich habe eine VM von XAMPP installiert (7.2.10) und habe dann gleich unter phpmyadmin die Passwörter vergeben, überall das gleiche erstmal. Und dann habe ich mir wie wohl mein Vorredner mir alles unter dem hintern weg gezogen. Ich würde das gerne einfach noch mal deinstallieren wollen und dann noch mal neu aufsetzen, aber das gelingt mir ja schon nicht. Ich verstehe nicht warum man da nicht dran kommt wenn man doch die Passwörter hat. zumal bin ich im osx nicht wirklich fitt mit chmod befehlen und so weiter. das mit dem temp ordner auf andere Rechte zu setzen hat gefühlt schon nicht geklappt. Kann mir da einer helfen das ganze einfach nur zu deinstallieren mit der VM halt.
Danke
Gruß Peter
petergre
 
Posts: 1
Joined: 30. September 2018 12:07
XAMPP version: 7.2.10
Operating System: OSx

Re: chmod permission denied

Postby Nobbie » 30. September 2018 21:50

petergre wrote:Ich verstehe nicht warum man da nicht dran kommt wenn man doch die Passwörter hat. zumal bin ich im osx nicht wirklich fitt mit chmod befehlen und so weiter. das mit dem temp ordner auf andere Rechte zu setzen hat gefühlt schon nicht geklappt. Kann mir da einer helfen das ganze einfach nur zu deinstallieren mit der VM halt.


Das ist eben eine "VIrtual Machine", ein Computer im Computer. In der Xampp VM ist ein eigenes Betriebssystem aktiv und ein eigenes Dateisystem und das Betriebssystem dort ist Linux und nicht OSX. Was ich nicht verstehe, da steht doch dick und fett "Xampp-VM" außen dran, da steht auch "More info about XAMPP-VM", dass KANN MAN NICHT überlesen. Warum installiert man das, wenn man keinen blassen Dunst davon hat, was das ist? Ich habe leider keinen OSX Rechner hier, aber bestimmt steht in dem Readme auch drin, wie man es wieder los wird. Das wird irgendein Ordner sein mit allem drum und dran und der muss entfernt werden. Aber selbst wenn man den bestehen läßt, es kann nicht wirklich schwer sein zu verhindern, dass Xampp-VM überhaupt gestartet wird.

Last not least: ich bin sicher kein WIndows Anhänger, aber wieso man Apple und OSX kauft, wird sich mir nie erschließen. Teuer und benutzerfeindlich. Wenn es auch nur halbwegs ans EIngemachte geht (wie hier), dann ist doch Hopfen und Malz verloren. Nichts geht mehr. Aber das Marketing von Apple ist wahrscheinlich das beste der Welt. Anders verstehe ich es nicht.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04


Return to XAMPP für macOS

Who is online

Users browsing this forum: No registered users and 20 guests