php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.11.2006, 21:12  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard endlich gute lösung für safe_mode probleme. viel spass. ;)

also leute. ich hab jetzt eigentlich eine gute lösung gefunden. mit dieser lösung funktionieren bei safe_mode = on auch alle gängigen praktischen befehle wie move_uploaded_file(), copy(), rename() usw.

man muss einfach nur den ordner und wirklich nur den/die ordner mittels php ftp funktionen erstellen lassen. dann hat das script auch die nötigen rechte.

ich habe für das mal eine klasse geschrieben, dann hat das safe_mode problem ein ende. diese klasse berücksichtigt auch dass ftp_chmod() erst ab php 5 verfügbar ist:
PHP-Code:
<?php
class php_ftp {

  var 
$server 'mein_ftp_server';
  var 
$username 'mein_ftp_username';
  var 
$password 'mein_ftp_passwort';

  function 
ftp_connection(){
    
$conn_id = @ftp_connect($this->server) or die("Could not connect to FTP");
    
$login_result = @ftp_login($conn_id$this->username$this->password) or die("Could not login to FTP");
    return 
$conn_id;
  }

  function 
kill(){
    if(
$this->conn) {
      unset(
$this);
    }
  }

  function 
ftp_makedir($dir) {
    
$conn $this->ftp_connection();
    if(!
ftp_mkdir($conn$dir)) {
      
ftp_quit($conn);
      return 
false;
    } else {
      if(!
function_exists('ftp_chmod')) {
        function 
ftp_chmod($conn$mode$dir) {
          return 
ftp_site($connsprintf('CHMOD %o %s'$mode$dir));
        }
        
ftp_chmod($conn0777$dir);
        return 
true;
      } else {
        
ftp_chmod($conn0777$dir);
        return 
true;
      }
    }
  }

}
?>
verwendung der klasse:
PHP-Code:
<?php
        $path 
'mein_pfad/';
        
$dir 'mein_neuer_ordner';
        
$ftp = new php_ftp();
        
$ftp->ftp_makedir($path.$dir);
        
$ftp->kill();
?>
__________________
mfg Alexander Haim
Promaetheus ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.11.2006, 23:56  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielen dank für deine 'lösung'. das problem damit ist - es ist keine lösung, sondern einfach nur sch*se, denn
* es löst das problem nicht
* man braucht, sobald man deine funktion benutzt, einen laufenden ftp-server mit all seinen sicherheitslücken (namely auch beim entwickeln über localhost)
* du machst damit dateizugriffe um ein vielfaches langsamer als es sein müsste.

du bist im übrigen nicht der erste, der auf diese 'grandiose' 'idee' gekommen ist - und genau dreimal darfst du raten, warum diese 'idee' sich nicht durchgesetzt hat.

die weit bessere lösung: du packst das problem bei der wurzel, liest die doku ordentlich durch und verstehst endlich, was php macht, wenn safe_mode=on ist, und schreibst deine skripte in zukunft so, dass genau dieses "nicht-problem" erst gar nicht auftritt.

grüße
axo
axo ist offline  
Alt 09.11.2006, 00:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

ok. dann ein konkretes fallbeispiel.
ein script soll für jeden user einer anzahl von nutzern einer seite einen persönlichen ordner erstellen und darin eine textdatei mit profildaten ablegen. vielleicht soll es auch noch unterordner für bilder, verfasste artikel, was weiß ich erstellen.
schon hier versagt php mit safemode, weil die ordner, die das script erstellt nicht die gleichen rechte wie das script selbst hat, und alle weiteren aktionen im frisch erstellten ordner werden abgelehnt.

komm mir jetzt nicht mir nutze mysql, denn das ist auch nicht immer
-die antwort
-von möglichkeit

es geht hier nicht um 'dateizugriffe', sondern darum einen ordner zu erstellen. fopen etc. wird ja nicht von safemode beeinträchtigt.
nikosch ist offline  
Alt 09.11.2006, 06:20  
Erfahrener Benutzer
 
Benutzerbild von GelaMu
 
Registriert seit: 05.03.2006
Beiträge: 183
GelaMu
Standard

nikosch77, warum willst du unbedingt mit diesen Ordnern und Dateien arbeiten und damit unnötig deine Applicationen verlangsamen?
Es ist eine Sache wenn man in einem einzigen Ordner Dateien mit Userinfos ablegt, aber gleich noch Unterordner?
Kapier ich net...

Versuch macht klug, deswegen führ doch mal ein Paar Benchmarks mit MySQL und DEINER LOESUNG durch.
Ich spiele selber gerne mit Dateien herum, allerdings benutze ich PHP mehr über die Konsole als über Server... und darum habe ich derartige Probleme nur selten

Grüße,
GelaMu
GelaMu ist offline  
Alt 09.11.2006, 09:12  
Benutzer
 
Registriert seit: 18.08.2006
Beiträge: 61
Jogibär
Standard Re: endlich gute lösung für safe_mode probleme. viel spass.

Zitat:
Zitat von Promaetheus
ich hab jetzt eigentlich eine gute lösung gefunden. mit dieser lösung funktionieren bei safe_mode = on auch alle gängigen praktischen befehle wie move_uploaded_file(), copy(), rename() usw.
Das ist aber ein gaaaaanz alter Hut.

Jogibär
Jogibär ist offline  
Alt 09.11.2006, 09:17  
Erfahrener Benutzer
 
Registriert seit: 07.11.2003
Beiträge: 526
Promaetheus
Standard

@axo: ist ja keine problem. überlies das alles einfach und halte dich nicht länger damit auf. für leute die das brauchen: könnt das gern verwenden. nochwas zu deinen anschuldigungen. ich weiss sehr wohl was php in safe_mode macht. wenn es keine möglichkeit gibt das script so zu erstellen dass der eigentümer des scripts gleich dem eigentümer der datei ist, so gibt es nicht viele weitere möglichkeiten. ftp läuft doch fast überall. wie gesagt es ist NUR ein workaround.
ich wollte einfach mal was zurückgeben und nicht immer nur fragen (antileech). aber das wissen manche, als gottgeborene unfehlbare wohl nicht. muss aber nicht alles gleich schlecht gemacht werden.
@gelamu: in meinem fall http://www.phpfriend.de/forum/ftopic60578.html#417982 wäre es zwar möglich wie zergling gesagt hat einen ordner upload zu erstellen und dann die dateien den produkten zuzuordnen und auch sicher besser. jedoch wäre es erheblich mehraufwand gewesen.

ich habe diese lösung ja nur geschrieben um nicht das ganze script neu zu schreiben. und daher sollte sie für leute gedacht sein die bereits ein safe_mode problem haben um dieses schnell zu lösen. DAS war der grundgedanke.
__________________
mfg Alexander Haim
Promaetheus ist offline  
Alt 09.11.2006, 14:50  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

@GelaMu
Man kann immer abwägen zwischen Accessibility und Performance. Ich erstelle eine Seite, die Basisfunktionen bieten soll, aber z.B. Uploads auf FTP beschränkt. Ich finde es einfach eleganter, auch die Filestruktur so einzurichten, daß sie menschenlesbar ist. Deshalb sind getrennte Ordner für verschiedene Inhalte sinnvoller. Z.B. Digicam-Bilder verschiedener User zu einem bestimmten Ereignis. Mit ner Upload-Funktion müßte ich die jetzt umbenennen, um doppelte Namen auszuschließen. Im Filesystem kann ich das mit unterschiedlichen User-Ordnern realisieren.
Performance sichere ich durch Caching.
nikosch ist offline  
Alt 09.11.2006, 17:45  
Erfahrener Benutzer
 
Benutzerbild von GelaMu
 
Registriert seit: 05.03.2006
Beiträge: 183
GelaMu
Standard

@nikosch77
Ja, wenn's so ist kann ich's ja verstehen.
Ich habe so 'ne Angewohnheit rekusrive Ordner zu vermeiden, ich krieg davon immer Kopfweh
GelaMu ist offline  
 


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

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
viel spass lösungen, safe_mode, dateizugriff safe_mode

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:29 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.