PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   [PHP5] CHMOD für aller Dateien in einem Verzeichnis ändern? (https://www.php-resource.de/forum/php-developer-forum/77952-php5-chmod-fuer-aller-dateien-in-einem-verzeichnis-aendern.html)

bigtail 13-11-2006 00:11

[PHP5] CHMOD für aller Dateien in einem Verzeichnis ändern?
 
Hi,

Ich möchte die chmod aller Dateien in einem bestimmten Verzeichnis ändern. Da das Ganze über eine FTP-Verbindung nicht möglich ist, möchte ich dazu das folgende PHP-Script verwenden:

PHP-Code:


$dir
="../pics";
    
$rep=opendir($dir);
    while ( 
$file readdir($rep) )
    {
        
chmod($file0777);
    } 

Leider es klappt nicht, es erscheint folgende Fehlermeldung:
Zitat:

Warning: chmod() [function.chmod]: Operation not permitted in /home/httpd/...
Warum eigentlich??

Danke

jahlives 13-11-2006 00:24

Und du hast zur Fehlersuche natürlich folgendes gemacht ;)
PHP-Code:

$dir="../pics";
    
$rep=opendir($dir);
    while ( 
$file readdir($rep) )
    {
        if(
chmod($file0777) === false){
            echo 
$file.'<br/>';
        }
    } 

Welche Dateinamen werden im Fehlerfalle ausgegeben ? Ich nehme stark an, dass es sich um '.' und '..' handelt. Dazu das Manual

Gruss

tobi

bigtail 13-11-2006 00:58

Danke für die Antwort.

Die Fehlermeldung sieht jetzt so aus:

Zitat:

Warning: chmod() [function.chmod]: Operation not permitted in /home/httpd/vhosts/Domain/httpsdocs/admin/chmod.php on line 18
.

Warning: chmod() [function.chmod]: Operation not permitted in /home/httpd/vhosts/Domain/httpsdocs/admin/chmod.php on line 18
..

Warning: chmod() [function.chmod]: No such file or directory in /home/httpd/vhosts/Domain/httpsdocs/admin/chmod.php on line 18
_standard.jpg

Warning: chmod() [function.chmod]: No such file or directory in /home/httpd/vhosts/Domain/httpsdocs/admin/chmod.php on line 18
_anonym.jpg

Warning: chmod() [function.chmod]: No such file or directory in /home/httpd/vhosts/Domain/httpsdocs/admin/chmod.php on line 18
democracy.jpg

usw.

Was nun??

jahlives 13-11-2006 01:09

Also entweder gibt's diese beiden Bildnamen nicht oder du suchst im falschen Verzeichnis. Ich lese bei dir dass das Verz ../pics lauten sollte. Die Fehlermeldung spricht aber von /admin/
PHP-Code:

$dir realpath('../pics/'); //ggf den abschliessenden Slash entfernen
$rep=opendir($dir);
    while ( 
$file readdir($rep) )
    {
        if(
$file == '.' || $file == '..') continue;
        if(
chmod($file0777) === false){
            echo 
$file.'<br/>';
        }
    } 

Und gibt's jetzt immer noch dieselben Fehler ?

Gruss

tobi

bigtail 13-11-2006 01:19

Ich habe nun dein script (chmod.php) gleich in das Verzeichnis "pics" hochgeladen und ausgeführt.

PHP-Code:

    $dir realpath('.'); 
    
$rep=opendir($dir);
    while ( 
$file readdir($rep) )
    {
        if(
$file == '.' || $file == '..') continue;
        if(
chmod($file0777) === false){
            echo 
$file.'<br/>';
        }
    } 

Es erscheint nun folgende Fehlermeldung, aber mit Ändern von chmod hat es geklappt.

Zitat:

Warning: chmod() [function.chmod]: Die Operation ist nicht erlaubt in /home/httpd/vhosts/Domain/httpsdocs/pics/news/chmod.php on line 19
hand.jpg

Warning: chmod() [function.chmod]: Die Operation ist nicht erlaubt in /home/httpd/vhosts/Domain/httpsdocs/pics/news/chmod.php on line 19
chmod.php
Verstanden habe ich es aber leider nicht. :rocks:

jahlives 13-11-2006 01:45

Also dass er die Rechte von chmod.php nicht ändern kann dürfte daran liegen, dass dieses File zu diesem Zeitpunkt geöffnet ist und nicht nochmals geöffnet werden kann bzw Rechte verändert werden können.

bigtail 13-11-2006 10:31

Zitat:

Also dass er die Rechte von chmod.php nicht ändern kann dürfte daran liegen, dass dieses File zu diesem Zeitpunkt geöffnet ist und nicht nochmals geöffnet werden kann bzw Rechte verändert werden können.
Es klingt plausibel, aber warum müsste ich das Script (chmod.php) unbedingt in das Verzeichnis "pics" ausführen?

wahsaga 13-11-2006 10:36

Zitat:

Original geschrieben von bigtail
Es klingt plausibel, aber warum müsste ich das Script (chmod.php) unbedingt in das Verzeichnis "pics" ausführen?
Müsstest du nicht - wenn du den Pfad vernünftig angeben würdest.

bigtail 13-11-2006 13:18

Zitat:

Müsstest du nicht - wenn du den Pfad vernünftig angeben würdest.
Hauptverzeichnis: "httpsdocs"
Unterverzeichnisse: "admin" und "pics"

Die Datei "chmod.php" befindet sich in das Unterverzeichnis "admin" und muss beim Aufruf, chmod von allen Bildern aus dem (Unter)verzeichnis "pics" ändern:

PHP-Code:

$dir realpath('../pics'); //Raus aus dem "admin", rein ins "pics"
$rep=opendir($dir);
while ( 
$file readdir($rep) )
    {
        if(
$file == '.' || $file == '..') continue;
        if(
chmod($file0777) === false){
            echo 
$file.'<br/>';
        }


Wäre "../pics" ein vernünftiger Pfad?:p

Gruß

wahsaga 13-11-2006 13:20

Wie wär's denn, wenn du beim chmod-Aufruf den Pfad auch mal angibst?

bigtail 13-11-2006 13:22

Etwa so?:

PHP-Code:

$dir realpath('../pics'); //Raus aus dem "admin", rein ins "pics"
$rep=opendir($dir);
while ( 
$file readdir($rep) )
    {
        if(
$file == '.' || $file == '..') continue;
        if(
chmod('../pics/'$file0777) === false)
       {
            echo 
$file.'<br/>';
        }



Trashar 14-11-2006 09:04

hast es denn mal ausprobiert!

MrJonez 16-11-2006 16:04

Das Berechtigungsproblem kannst du ganz einfach mit ftp_site umgehen.


Example:

PHP-Code:


<?php
  
// Verbindung per FTP zum Server herstellen 
  
$conn ftp_connect("localhost"); 
   
  
// Logindaten senden 
  
ftp_login($conn"username""passwort"); 
   
  
// In das Verzeichnis wechseln, in der die zu ändernde Datei liegt, muss man aber nicht 
  // hier muss man vom FTP-Rootverzeichnis ausgehen, nicht vom Documentroot - also nicht /var/www/html/ sondern /html, wenn das so eingestellt ist 
  
ftp_chdir($conn"/goto/my/dir"); 
   
  
// Mods der Datei oder des Verzeichnisses ändern 
  // - CHMOD ist klar, das ist der Befehl, der dem FTP Server sagt, dass er die Mods ändern soll 
  // - 0747 sind die Mods, die geändert werden sollen - es muss immer eine 0 vorangestellt sein 
  // - index.php ist eine Beispieldatei 
  
ftp_site($conn"CHMOD 0747 index.php"); 
   
  
// Verbindung wieder trennen 
  
ftp_close($conn); 
?>


<edit>Und wenn du den Rekursiv-Parameter mit anhängst, brauchst du auch nicht mit PHP die Ordnerstruktur durchlaufen</edit>


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:01 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG