php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.04.2006, 16:02  
Benutzer
 
Registriert seit: 04.06.2005
Beiträge: 30
JonathanArcher
Standard safe mode verhindert copy

Hallo!
Ich bin mir ziemlich sicher, dass solch eine Frage schon gestellt wurde, habe aber weder über google noch über diverse Forensuchen eine Lösung gefunden.

Ich habe folgendes Problem.
Nachdem Dateien hochgeladen wurden, landen sie per move_uploaded_file() in einem Verzeichnis. Dann legt der User ein Verzeichnis an. In dieses Verzeichnis sollen nun die Dateien per copy() verschoben werden. Lokal auf meinem Rechner funktioniert das auch wunderbar, aber auf meinem gemieteten Space nicht, da dort der safe_mode aktiviert ist (hätt ich mit rechnen sollen ://)...

Zitat:
Warning: copy() [function.copy]: SAFE MODE Restriction in effect. The script whose uid is 1483 is not allowed to access /home/www/web396/html/pix/galleries/2006-04-16--testordner owned by uid 30 in /home/www/web396/html/file_upload.php on line 48
Ursprünglich sollten da sogar noch Unterverzeichnisse rein, aber das hab ich schon umgeschrieben, so dass das auch ohne funktioniert.

Jetzt meine Frage: Kann man die Datei trotzdem irgendwie dorthin verschieben? Ich kenne ein anderes Script, bei dem das funktioniert (gleicher host). Allerdings kann ich den Autor nicht erreichen.
JonathanArcher ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.04.2006, 16:12  
Benutzer
 
Registriert seit: 04.06.2005
Beiträge: 30
JonathanArcher
Standard

Der Code in einem neuen Beitrag, weil irgendwie die Breite sonst verrückt spielt.

PHP-Code:
$files_src scandir($dirname); //Überprüfe auf Dateien
                    
$files = array();
                    foreach(
$files_src as $key => $value){//Sortiere nur jpg Dateien ins array
                        
if(strtolower(substr($value, -3)) == "jpg"){
                            
$files[] = $value;
                        }
                    }
                    
                    if(
$_POST['allinto'] !== "deletefile" AND $_POST['allinto'] !== "---"){//Alle Dateien sollen gleich behandelt und nicht gelöscht werden.
                        
$folder_src mysql_query("SELECT folder FROM bilder WHERE ID='".$_POST['allinto']."' LIMIT 1") OR die(mysql_error());//Lese Ordnernamen aus.
                        
if(mysql_num_rows($folder_src) > 0){
                        
$folder mysql_fetch_array($folder_src);
                            foreach(
$files as $key => $value){//Verschiebe alle Dateien
                                //Wenn die Datei korrekt verschoben wurde,                                        lösche die Urpsrungsdatei
                                
if(copy($dirname.$value"pix/galleries/".$folder['folder']."/$value")) unlink($dirname.$value);
                            }
                        }
                    }elseif(
$_POST['allinto'] == "deletefile"){//Alle Dateien sollen gleich behandelt und gelöscht werden.
                        
foreach($files as $key => $value){
                            
unlink($dirname.$value);//Lösche alle Dateien
                        
}
                    } 
__________________
Die Borg würden nicht einmal Spaß verstehen, wenn sie einen ganzen Funpark assimilieren würden. --B'Elana Torres --
JonathanArcher ist offline   Mit Zitat antworten
Alt 17.04.2006, 16:57  
Benutzer
 
Registriert seit: 04.06.2005
Beiträge: 30
JonathanArcher
Standard

Ich habe den Ordner jetzt per ftp anlegen lassen. Dadurch stimmt der Ordnerbesitzer mit dem Scriptbesitzer überein, und alles ist gut... das gefällt mir zwar nicht, aber es ist ein workaround, bis ich evtl. irgendwann mal ne saubere Lösung gefunden habe.
__________________
Die Borg würden nicht einmal Spaß verstehen, wenn sie einen ganzen Funpark assimilieren würden. --B'Elana Torres --
JonathanArcher ist offline   Mit Zitat antworten
Alt 17.04.2006, 20:39  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Eine Möglichkeit die Einschränkungen des Safe Modes zu umgehen, wäre es, die Datei mit den FTP-Funktionen von zu kopieren, wenn diese dir zur Verfügung stehen.
xabbuh ist offline   Mit Zitat antworten
Alt 17.04.2006, 20:43  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von xabbuh
Eine Möglichkeit die Einschränkungen des Safe Modes zu umgehen, wäre es, die Datei mit den FTP-Funktionen von zu kopieren, wenn diese dir zur Verfügung stehen.
Wieso sollte man ganze Dateien über das FTP verschieben, die ja durchaus
größer als ein paar Bytes sein können, wenn sich das Problem mit dem
Erstellen des Ordners übers FTP ebenfalls beheben lässt?
  Mit Zitat antworten
Alt 17.04.2006, 21:28  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von karl-150
Wieso sollte man ganze Dateien über das FTP verschieben, die ja durchaus
größer als ein paar Bytes sein können, wenn sich das Problem mit dem
Erstellen des Ordners übers FTP ebenfalls beheben lässt?
Hast Recht, das ist natürlich besser.

Zitat:
Zitat von JonathanArcher
Nachdem Dateien hochgeladen wurden, landen sie per move_uploaded_file() in einem Verzeichnis. Dann legt der User ein Verzeichnis an. In dieses Verzeichnis sollen nun die Dateien per copy() verschoben werden.
Auf welche Art und Weise legt der Benutzer denn hier das Verzeichnis an?
xabbuh ist offline   Mit Zitat antworten
Alt 17.04.2006, 21:28  
Benutzer
 
Registriert seit: 04.06.2005
Beiträge: 30
JonathanArcher
Standard

Zitat:
Zitat von karl-150
Zitat:
Zitat von xabbuh
Eine Möglichkeit die Einschränkungen des Safe Modes zu umgehen, wäre es, die Datei mit den FTP-Funktionen von zu kopieren, wenn diese dir zur Verfügung stehen.
Wieso sollte man ganze Dateien über das FTP verschieben, die ja durchaus
größer als ein paar Bytes sein können, wenn sich das Problem mit dem
Erstellen des Ordners übers FTP ebenfalls beheben lässt?
Eben. Ich dachte auch erst daran, alle Dateien perftp zu verschieben. Aber die Version mit dem Ordner macht alles viel einfacher. Und erzeugt weniger Traffic.
__________________
Die Borg würden nicht einmal Spaß verstehen, wenn sie einen ganzen Funpark assimilieren würden. --B'Elana Torres --
JonathanArcher ist offline   Mit Zitat antworten
Alt 17.04.2006, 21:30  
Benutzer
 
Registriert seit: 04.06.2005
Beiträge: 30
JonathanArcher
Standard

Zitat:
Zitat von xabbuh
Zitat:
Zitat von karl-150
Wieso sollte man ganze Dateien über das FTP verschieben, die ja durchaus
größer als ein paar Bytes sein können, wenn sich das Problem mit dem
Erstellen des Ordners übers FTP ebenfalls beheben lässt?
Hast Recht, das ist natürlich besser.

Zitat:
Zitat von JonathanArcher
Nachdem Dateien hochgeladen wurden, landen sie per move_uploaded_file() in einem Verzeichnis. Dann legt der User ein Verzeichnis an. In dieses Verzeichnis sollen nun die Dateien per copy() verschoben werden.
Auf welche Art und Weise legt der Benutzer denn hier das Verzeichnis an?
Er gibt einen Ordnernamen ein. Der wird bereinigt (Sonderzeichen etc. entfernt, gekürzt), ein Datum wird davor gesetzt und dann wird das Verzeichnis per mkdir() angelegt. Bzw. jetzt eben per ftp_mkdir(). Außerdem wird der Ordnername zum Wiederfinden in die Datenbank geschrieben.

EDIT: Falls es dich interessiert hier der code:
PHP-Code:
$dirname "pix/galleries/".date("Y-m-d")."--".substr(rplc_spc_chrs(strtolower($_POST['gallery'])), 010);
                if(!
is_dir($dirname)){
                    if(
$ftpsite ftp_connect(FTP_SITE_URL)){
                        if(
ftp_login($ftpsiteFTP_SITE_USERNAMEFTP_SITE_PASSWORD)){
                            if(
ftp_mkdir($ftpsite"/html/".$dirname) === FALSE)
                                echo 
"[b]Ordner konnte nicht angelegt werden[b]";
                            else{
                                if(
ftp_chmod($ftpsite0777"/html/".$dirname)){
                                    echo 
"[b]Die Gallerie wurde erfolgreich angelegt.[/b]
\n\t\t\t"
;
                                    
mysql_query("INSERT INTO bilder SET titel = '".htmlentities($_POST['gallery'])."', folder = '".date("Y-m-d")."--".substr(rplc_spc_chrs(strtolower($_POST['gallery'])), 010)."'".(isset($_POST['show'])? ", `show` = '1'":"")) OR die(mysql_error());
                                }else echo 
"[b]Der Gallerieordner wurde erfolgreich angelegt, aber die Rechte konnten dort nicht korrigiert werden. Bitte kontaktieren Sie den Webmaster. Sie können keine Dateien in diese Kategorie einordnen.[/b]
\n\t\t\t"

                            }
                        }else echo 
"[b]Konnte mich auf nicht am FTP anmelden.[/b]";
                    }else echo 
"[b]Konnte keine Verbindung zum FTP-Server herstellen.[/b]";
                    
                } 
__________________
Die Borg würden nicht einmal Spaß verstehen, wenn sie einen ganzen Funpark assimilieren würden. --B'Elana Torres --
JonathanArcher ist offline   Mit Zitat antworten
Alt 17.04.2006, 21:44  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von JonathanArcher
Er gibt einen Ordnernamen ein. Der wird bereinigt (Sonderzeichen etc. entfernt, gekürzt), ein Datum wird davor gesetzt und dann wird das Verzeichnis per mkdir() angelegt.
Wenn das Script das Verzeichnis selbst anlegt, sollte es allerdings auch ausreichend Rechte haben, um dort reinzuschreiben. Oder habe ich jetzt gerade ein Brett vor dem Kopf?
xabbuh ist offline   Mit Zitat antworten
Alt 17.04.2006, 21:47  
Benutzer
 
Registriert seit: 04.06.2005
Beiträge: 30
JonathanArcher
Standard

Zitat:
Zitat von xabbuh
Zitat:
Zitat von JonathanArcher
Er gibt einen Ordnernamen ein. Der wird bereinigt (Sonderzeichen etc. entfernt, gekürzt), ein Datum wird davor gesetzt und dann wird das Verzeichnis per mkdir() angelegt.
Wenn das Script das Verzeichnis selbst anlegt, sollte es allerdings auch ausreichend Rechte haben, um dort reinzuschreiben. Oder habe ich jetzt gerade ein Brett vor dem Kopf?
Nein. Der Safe mode überprüft, ob der Besitzer des Ordners gleich dem Besitzer des Scripts ist. Der Besitzer des Scripts ist der ftp-Benutzer, der Besitzer des Ordners ist wwwrun.
__________________
Die Borg würden nicht einmal Spaß verstehen, wenn sie einen ganzen Funpark assimilieren würden. --B'Elana Torres --
JonathanArcher ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] komischer safe mode fehler PHP-Fortgeschrittene 7 21.05.2012 14:26
php safe mode und shell_exec Fraylman PHP Tipps 2006 8 20.06.2006 04:10
php safe mode! PHP Tipps 2006 4 24.01.2006 23:12
PHP Safe Mode PHP Tipps 2006 1 09.01.2006 22:18
Generelles zu SAFE MODE Cosmo PHP Tipps 2007 2 23.11.2005 10:14
Safe Mode [erledigt] dethlef14 PHP Tipps 2005-2 1 16.10.2005 13:33
Safe mode?! Calli PHP Tipps 2005-2 6 02.08.2005 16:11
Problem mit mail() bei SAFE MODE Stinger PHP Tipps 2005 1 23.03.2005 23:59
Backquotes in Safe Mode bei PHP PHP Tipps 2005 1 27.02.2005 21:32
Safe mode PHP Tipps 2005 10 23.02.2005 12:50
Mail bei Safe Mode Mano PHP Tipps 2004-2 1 30.12.2004 13:29
Safe Mode auf Kommandozeile umgehen wurtzel PHP-Fortgeschrittene 3 28.11.2004 15:37
disabled in SAFE MODE PHP Tipps 2004 4 19.09.2004 11:14
php im Safe Mode und dennoch override erlauben. Möglich? Server, Hosting und Workstations 3 17.08.2004 18:03
Safe mode für Datei Upload ist aktiviert Pimbolie1979 PHP-Fortgeschrittene 4 04.08.2004 11:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php copy safe mode, php copy safemode, safe_mode ist deaktiviert trotzdem datei upload besitzer wwwrun, verschieben alle dateien eines verzeichnisses php copy unlink foreach, copy safe mode php, php copy safe, php copy safe-mode, umgehen von php safe mode, datei kopieren php safe mode, php safe mode copy, mysql_fetch_array safe_mode, php copy auf netzrechner, safemode verhindert, php safe mode umgehen datei verschieben, copy safemode php, php safe mode copy file, safe_mode für verzeichnis, linux cp folder a bolder b, php mkdir und datei hochladen safe mode, verhindern safemode

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:15 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.