oldbear Posted August 25, 2009 Report Share Posted August 25, 2009 hi, im Betrieb beim localhost klappt die Sache, am Server jedoch nicht: beim Aufruf erscheint folgende Meldung: Forbidden You don't have permission to access /store/media/files_public/qnwnkouowgl/cat_uz878.pdf on this server. Apache Server at Domain.de - Domains registrieren und verwalten - Ihre Online-Plattform für Domains und Webhosting Port 80 und es werden immer kryptische Pfade ( qnwnkouowgl ) in die xt_media_symlink geschrieben Die Dateien liegen in ../media/files_public Wer weiss warum ? Grüsse Günther Link to comment Share on other sites More sharing options...
amilo Posted August 25, 2009 Report Share Posted August 25, 2009 Schreibrechte? MfG. Hansen Link to comment Share on other sites More sharing options...
mzanier Posted August 25, 2009 Report Share Posted August 25, 2009 es muss das erzeuigen von symlinks möglich sein, manche provider haben dies deaktiviert, bitte an provider wenden. Link to comment Share on other sites More sharing options...
oldbear Posted August 25, 2009 Author Report Share Posted August 25, 2009 Vielen Dank, habe das mal an den Provider weitergegeben. In anderem Zusammenhang haben Sie mal erwähnt ( war ein Strato-Kunde ), dass, Zitat: die "Standard" -.htaccess von Veyton durch Strato überschrieben wurde. Gibt es diese "Standard" -.htaccess überhaupt, und wo ? mfg Günther Schmid In der Ruhe liegt die Kraft. EDIT: wenn ich auf den Server kucke, werden die Symlinks angelegt und verweisen auf die richtige Datei im ../media/files-Verzeichnis ( Standard ist wohl upload nach "files" , intern Symlinks in "files_public", wenn diese als freie Downloads angelegt werden ) Link to comment Share on other sites More sharing options...
beebboo Posted February 24, 2010 Report Share Posted February 24, 2010 Da hier überall im forum nur steht, dass symlinks schuld sind, aber das nicht stimmt, möchte ich die andere lösung zeigen: Der Fehler liegt bei einigen Servern nicht an Symlinks, sondern an den rechten des Ordners. Die kryptischen Unterordner (z.B. qnwnkouowgl) werden dynamisch erstellt und dabei bekommen sie logischerweise Rechte. Wenn diese z.B. 0770 sind, dann kann man von außerhalb nicht auf den Ordner zugreifen. Kann man z.B. leicht testen, wenn man die rechte auf 0777 ändert und dann den die datei mit dem Ordner direkt aufruft (nicht neu auf den link in der artikelübersicht klicken, weil das wieder einen neuen ordner erzeugt...) Entsprechend müssen die Rechte beim erstellen des Ordners angegeben werden. Normalerweise könnte man das an der entsprechenden Stelle im Shop-Code machen, aber das ist halt nicht so gut, daher gibt es noch eine andere Möglichkeit: Die umask des ausführenden Users ändern. Die umask gibt quasi an, wie die Rechte modifiziert werden sollen. Beispiel, wie es bei mir ging (Ubuntu mit Apache2 und suPHP): vorher waren die dynamischen Ordner alle: 0774 (keine ausführrechte) Dann hab ich in /etc/suphp/suphp.conf den umask von 0003 auf 0002 geändert. Dadurch werden dann alle erstellten ordner mit dem recht 0775 (inkl. ausführrechte) Bei anderen serverkonfigurationen muss umask entsprechend anders gesetzt werden. an die entwickler: vielleicht könnte man an der entsprechenden stelle im php-code bei dem sicherlich "mkdir(....)" benutzt wird, den mode-parameter verwenden um somit schon die richtigen rechte zusetzen! hoffe ich konnte weiterhelfen Link to comment Share on other sites More sharing options...
oldbear Posted February 24, 2010 Author Report Share Posted February 24, 2010 hi, an die /etc kommt man ohne eigenen Server meist nicht ran, ich konnte das Problem für Profihost so lösen ( aus dem Forum ): In der Class.download.php sieht das so aus: function _createSymlink($file,$tmp_dir) { global $logHandler; $dir = _SRV_WEBROOT; $dir_2 = $_SERVER['DOCUMENT_ROOT']; if (file_exists($dir.$this->safe_dir . $file)) { $dir = $dir; } elseif($dir_2.$this->safe_dir . $file){ $dir = $dir_2; } else { $log_data = array(); $log_data['error'] = 'no file found'; $logHandler->_addLog('error','download','0',$log_data); } originalzeile: //symlink($dir.$this->safe_dir . $file, $dir.$this->public_dir . $tmp_dir . "/" . $file); //WWWROOT is only available in ChangeRoot but //does not point to a real file when symlinking symlink('../../../../../'.$dir.$this->safe_dir . $file,$dir.$this->public_dir . $tmp_dir . "/" . $file); hat das was mit Rechten zu tun ? Weiter unten tatsächlich mkdir: /** * create dir in files_public folder * * @param unknown_type $dir */ function createPublicDir($dir) { mkdir(_SRV_WEBROOT.$this->public_dir.$dir); } Wie müsste hier der Mode-Parameter eingebaut werden ? Grüsse Link to comment Share on other sites More sharing options...
beebboo Posted February 26, 2010 Report Share Posted February 26, 2010 Wenn ich das richtig sehe, ändert sich dadurch nur der ordner... wäre möglich, dass da die Pfade nicht richtig sind... Den mode-parameter benutzt man z.B. wie folgt: mkdir("/path/to/my/dir", 0775); Siehe auch PHP: mkdir - Manual um über php im skript den umask zu ändern, wäre auch folgendes möglich: $old = umask(0); mkdir($dir,0777); umask($old); Link to comment Share on other sites More sharing options...
Mozzarella Posted January 22, 2011 Report Share Posted January 22, 2011 Also bei mir hat die geänderte Symlink-Zeile von oldbear auch endlich zum Erfolg geführt. Vielen Dank! Link to comment Share on other sites More sharing options...
peterk34 Posted May 12, 2011 Report Share Posted May 12, 2011 Oldbear ... DANKE !!!! nach geschätzten 1000 Versuchen und Stunden des Lesens im Forum hat genau die geänderte "Symlink Sache" funktioniert .... *aufatem* Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.