Hello,
ich nehme an, dass PHP bei Dir als CGI/FastCGI läuft. Dann wäre es nämlich durchaus erklärlich:
Wenn Du das CMS laufen lässt, läuft es unter einem anderen User, als wenn Du dein Testscript startest. Dass "777" für die Datei nichts bringt, ist dann auch noch nachvollziehbar, denn vermutlich darf dein CMS überhaupt nicht auf den Pfad zugreifen, also schon nicht in die betroffenen Verzeichnisse eintreten, bzw. sie verändern.
"777" ist sowieso Mist. Das reißt nur Löcher in die Sicherheitsstruktur des ganzen Systems.
Sorge dafür, dass das CMS einer Gruppe angehört, die in dem betroffnen Verzeichnispfad schreiben und lesen darf. Übereigne das betroffene Verzeichnis dieser Gruppe. Setze das GID-Flag für diesen Pfad an geeigneter Stelle und stelle die UMASK für den Benutzer des CMS entsprechend ein, sodass für Verzeichnisse 770 (oder 774) und für Dateien 660 (oder 664) als Vorgabe übrig bleibt. Das müsste mWn einer umask von 003 entsprechen.
Die Umask muss in der Shell-Konfiguration des betroffenen Users (der des CMS) eingestellt werden.
Dann sollte es dauerhaft funktionieren.
Noch besser wäre es wahrschinlich, für den Owner des Verzeichnisses nebst Unterverzeichnissen den CMS-User einzutragen und den FTP-User, falls einer notweindig ist, mit den oben erwähnten Gruppenrechten zu bedenken. Dann muss der CMS-User aber trotzdem in derselben Gruppe sein, damit er nach einem Filezugriff des FTP-Users auch noch auf dessen Dateien zugreifen darf.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg