#1 31. Juli 2009 Problem mit Alias Hallo ich arbeite gerade an einem PHP-Script, welches verschiedene Datei-Operationen (copy, mkdir und sowas in der Art) durchführt. Das funktioniert auch wunderbar wenn ich im DocumentRoot arbeite. Nun musste ich allerdings eine weitere Festplatte hinzufügen, auf der einige Daten abgelegt werden. Auf diese Ordner habe ich auch einen Alias erstellt, welcher zuverlässig funktioniert. Nur eben bei den o.g. PHP-Funktionen nicht. Was habe ich bisher probiert: - Symlink auf den Ordner -> funktioniert im Apache, allerdings kommt PHP damit auch nicht klar - absolute Pfade benutzt -> funktioniert Perfekt, allerdings will ich das ehrlich gesagt nicht so lassen - Rechte etc überprüft etc, daran scheitert es nicht Was ich gern möchte: - hat jemand vielleicht eine Idee wie ich PHP dazu bekomme mit einem Alias zu arbeiten (quasi Code: mkdir("/aliasname/bla/blubb", 0777); )? Aktuell sieht es so aus, dass ich diese Dateioperationen alle mit absoluten Pfaden mache, dem User aber dann relative Pfade als Link ausgebe. Das muss allerdings besser gehen ^^ Der Grund für das ganze ist übrigens recht knapper Speicherplatz. Ich hätte ja einfach die Platte vergrößert und mit Acronis die Partitionsgröße geändert, aber das will mein Chef nicht! Ach ja, xampp 1.7.1 und winxp sp3, virtuell aufn esx... + Multi-Zitat Zitieren
#2 31. Juli 2009 AW: Problem mit Alias Machs doch so: PHP: define ( 'PFAD' , '/dein/pfad/bis/zur/festplatte' ); $userpfad = '/what/ever' ; mkdir ( PFAD . $userpfad , 0777 );echo $userpfad ; Also ich mein du kannst bei den Dateioperationen einfach immer einen absoluten Teil des Pfades vorhängen. Grüße + Multi-Zitat Zitieren
#3 31. Juli 2009 AW: Problem mit Alias Solang ich nicht nen Pfad von Alias sondern vom DocRoot nehme geht das. Sobald ich mit dem Alias anfange erkennt er es nicht. Aber ich probiers aus, danke schonmal Rückmeldung kommt halt erst am Montag, ich arbeite ja am WE nix ^^ + Multi-Zitat Zitieren
#4 1. August 2009 AW: Problem mit Alias Hats vlt einfach was mit den Rechten zu tun? PHP laeuft mit www-data normalerweise als User, wenn der keine Schreibrechte im Aliasordner hat, kanner der auch keine Ordner dort erstellen. Du kannst ja das Warning oder Errorlevel in PHP mal hochsetzen und schauen was er fuer Fehler wirft. + Multi-Zitat Zitieren
#5 1. August 2009 AW: Problem mit Alias Ich denke nicht dass es an den Rechten liegt, da ich mit absoluten Pfadangaben wunderbar zugriff bekomme. Als Fehler kommt übrigens File not found bzw directory not found + Multi-Zitat Zitieren
#6 1. August 2009 AW: Problem mit Alias glaube nicht dass du es über windows (xp) und php über den üblichen weg hinbekommen wirst. PHP: symlink - Manual und PHP: link - Manual In den Kommentaren sind aber noch eine Tipps, z.b. PHP: <? php if(! function_exists ( 'link' )){ // Assume a windows system function link ( $target , $link ){ if( is_dir ( $target )){ // junctions link to directories in windows exec ( "junction $link $target " , $lines , $val ); return 0 == $val ; }elseif( is_file ( $target )){ // Hardlinks link to files in windows exec ( "fsutil hardlink create $link $target " , $lines , $val ); return 0 == $val ; } return false ; } } ?> Junction es sollte daher reichen wenn du mit junction nen symlink erstellst. aber ob das auch wirklich mit mkdir funktionieren wird ist auch fraglich. achja. google ftw + Multi-Zitat Zitieren
#7 2. August 2009 AW: Problem mit Alias den Symlink über Junction (gibts als Tool von Sysinternals bzw angeblich auch im win2003 Resource Kit ) hab ich schon erstellt. Der funktioniert auch wunderbar in Windows / im Apache, nur frisst den PHP genauso wenig wie den Alias. Es ist genau wie du gesagt hast, dass mkdir (und copy, und unlink... ) damit nicht klar kommen. Das andere Probier ich morgen mal aus, vielen Dank schonmal! + Multi-Zitat Zitieren
#8 5. August 2009 AW: Problem mit Alias was mir noch eingefallen ist: du kannst dir auch einfach 'wrapper' schreiben und das als befehle auf der windows 'shell' ausführen (system, exec, ...), wenn du sagst das mit den links funktioniert in windows. PHP: function smkdir ( $pathname ) { $cmd = "mkdir " . $pathname ; $result = exec ( $cmd ); if( $result == "" ) return false ; else return true ; } oder falls dir das nicht taugt, es gibt bestimmt tools die den link von junction auslesen können. PHP: function mkdir_alias ( $pathname ) { // pathname mit explode zerlegen, verzeichnisse einzeln wechseln und immer überprüfen ob DIR oder ALIAS, wenn alias dann ziel auslesen und mit bisherigen verzeichnispfad ersetzen ;) } + Multi-Zitat Zitieren
#9 6. August 2009 AW: Problem mit Alias Probier ich aus, dank dir der Rest läuft übrigens nicht! + Multi-Zitat Zitieren
#10 6. August 2009 AW: Problem mit Alias auch wenns eher suboptimal is, aber das funktioniert: PHP: <? php print 'path: ' . getcwd () . PHP_EOL ; chdir ( lnk_target ( './HTML.lnk' )); //zeigt auf H:\HTML print 'path: ' . getcwd () . PHP_EOL ; function lnk_target ( $lnkFile ) { $match = array(); preg_match ( '~Data.([\w_\\\/\.\-:]+)~' , file_get_contents ( $lnkFile ), $match ); return $match [ 1 ];} ausgabe bei mir: Code: path: C:\Dokumente und Einstellungen\Murdoc\Desktop path: H:\HTML + Multi-Zitat Zitieren
#11 6. August 2009 AW: Problem mit Alias haha coole sache :-D genau die funktion die ich suchte selber getippt ? bw geht ma klar damit kannste ja jetz ganz einfach dein pfad auslesen und fix drau zugreifen + Multi-Zitat Zitieren
#12 7. August 2009 AW: Problem mit Alias klingt doch schonmal gut, wird probiert Ich komm die nächsten Tage nicht auf arbeit, also nicht wundern wenn sich hier nix tut... PS: BWs gabs für jeden Beitrag + Multi-Zitat Zitieren