2009-04-14 9 views
0

OK, wenn ich hochgeladene Dateien mit PHP über move_uploaded_file() speichere Ich kann keine absolute URL verwenden, die ich relativieren muss. Meine Site hat 2 Root-Verzeichnisse, eines für die http-Seite und eines für die https-Seite: httpdocs bzw. httpsdocs. Also, wenn mein Skript auf der https-Seite ist, wie kann ich die Datei an einem Speicherort auf der http-Seite speichern?PHP: Dateien mit PHP in einem anderen Wurzelverzeichnis speichern?

Danke!

UPDATE OK, so dass es scheint, als ob ich die falsche absolute Pfadkonvention verwende ich es so mache:

$dir = 'https://www.mydomain.com/masonic_images/'; 
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name); 
+0

Warum können Sie keinen absoluten Pfad verwenden? –

+0

@Chad Ich erhalte einen Fehler, wenn ich einen absoluten Pfad verwende. "Warnung: move_uploaded_file(): URL-Dateizugriff ist in der Serverkonfiguration deaktiviert." Kann ich das in einer .htaccess-Datei anpassen? –

+0

Können Sie den Aufruf move_uploaded_file anzeigen? Es hört sich so an, als würden Sie anstelle eines Dateipfads eine URL angeben, die nicht funktioniert. –

Antwort

1

Sind die Verzeichnisse httpdocs und httpsdocs beide im selben übergeordneten Ordner gespeichert? Wenn dies der Fall ist, verwenden Sie einfach einen relativen Pfad für den zweiten Parameter in move_uploaded_file, um die Datei im anderen Stammverzeichnis abzulegen.

Zum Beispiel:

Dieser Code geht davon aus, dass der Upload-Skript im httpsdocs Stammverzeichnis befindet, und dass Sie die Datei in das Verzeichnis httpdocs zu speichern.

+0

Danke, ich habe versucht, was Sie sagten, und ich habe diesen Fehler: "Warnung: move_uploaded_file(): open_basedir Einschränkung in Kraft. Datei (../../ httpdocs/masonic_images/41_red_391-1-l.jpg) ist nicht in der Erlaubte Pfad (e) " –

+1

Ihr Webserver hat PHP konfiguriert, um alle Dateizugriffe außerhalb des aktuellen Site-Root zu blockieren. Sofern Sie die Einschränkung von open_basedir nicht deaktivieren können, gibt es keine Möglichkeit, die Bilder in das andere Verzeichnis zu platzieren. –

+0

@ Jon gibt es eine Möglichkeit, das mit. Htaccess zu tun? Danke –

2

Wenn Sie nicht den absoluten Pfad verwenden können, weil Sie nicht wissen, was die Absoluter Pfad ist, benutze PHP's realpath(), um herauszufinden, was es ist und benutze es dann.

5

move_uploaded_file() akzeptiert keine URLs für beide Parameter. Das Ziel ist ein absoluter Pfad in Ihrem Dateisystem.

<?php 
$dir = '/var/www/httpsdocs/'; // Adjust to your configuration 
move_uploaded_file($_FILES['blue_image']['tmp_name'], $dir.$new_name); 

Als @apphacker vorgeschlagen. Sie können realpath(__FILE__) verwenden, um den absoluten Pfad zu einer Datei zu bestimmen.

+0

Wie schreibe ich den absoluten Pfad richtig? –

+0

habe ich mit einem Beispiel aktualisiert. Absolute Pfade beginnen mit "/". URLs haben "[Protokoll]: //". – matpie

+0

Vielen Dank Ich habe dir eine 1+ für deine Hilfe gegeben! –

1

Beachten Sie, dass Sie hochgeladene Dateien in httpdocs hochladen können, könnte es möglich sein, eine PHP-Datei hochladen und beliebigen Code ausführen.

+0

Vielen Dank für den Hinweis, die Benutzer verwenden dies nicht, obwohl dies für Mitarbeiter ist, um Produktbilder hochzuladen. –