Es ist wichtig, daß derselbe Benutzer konsistent das gesamte Contenido-Verzeichnis besitzt. Beispiel:
Es kommt oftmals vor, daß Contenido den Besitzer "A" hat, die Dateien, die jedoch durch das Contenido bearbeitet werden, den Besitzer "B" haben. Sofern der SAFE_MODE in PHP ausgeschaltet ist, ist das kein Problem, sofern die Dateiberechtigungen stimmen, aber da in den meisten Fällen der SAFE_MODE an ist, darf Contenido als "A" nicht auf Dateien von "B" zugreifen, obwohl die Berechtigungen stimmen. Wichtig ist daher, daß sämtliche Verzeichnisse und Dateien denselben Besitzer haben!
Nachfolgendes kleines Script prüft, ob irgendwelche Verzeichnisse und/oder Dateien einen unterschiedlichen Besitzer haben. Einfach in eine Textdatei (z.b. permissioncheck.php) kopieren, hochladen und auf dem Webserver über einen Browser aufrufen.
Code: Alles auswählen
<?php
echo "<pre>";
checkOwnerDir(getcwd()."/");
echo "checkPerms beendet.";
echo "</pre>";
function checkOwnerDir ($from_path)
{
$old_path = $from_path;
if (is_dir($from_path))
{
chdir($from_path);
$myhandle=opendir('.');
while (($myfile = readdir($myhandle))!==false)
{
if (($myfile != ".") && ($myfile != ".."))
{
if (fileowner($myfile) != getmyuid())
{
$ownerInfo = posix_getpwuid(fileowner($myfile));
echo "<font color=\"red\">Fehler:</font> Der Besitzer \"".$ownerInfo["name"]."\" der Datei ".$from_path.$myfile." ist unterschiedlich zu dem Besitzer (\"".get_current_user()."\") des aktuellen Scriptes. Stellen Sie sicher, daß die Datei den gleichen Besitzer (owner) erhält wie das Script.\n";
}
if (is_dir($myfile))
{
checkOwnerDir ($from_path.$myfile."/");
chdir($from_path);
}
}
}
closedir($myhandle);
}
chdir($old_path);
return;
}
?>