2017-08-12 4 views
0

Ich habe 2 Subdomain:Wie move_uploaded_file von einer Subdomain zu einer anderen Subdomain?

  1. admin.example.com - Administrationspanel
  2. static.example.com - Hochgeladene Bilder

Wie ich Datei move_uploaded_file für das Hochladen verwenden können von der ersten Subdomainwurzel zur zweiten Subdomainwurzel?
Upload-Funktion:

define('UPLOAD_DIR', '/home/.../static.example.com/htdocs/uploads/'); 
define('UPLOAD_ADDR', 'http://static.example.com/uploads/'); 

define('TEMP_DIR', '/home/.../admin.example.com/htdocs/temp/'); 

function upload_file($input, $upload_subdir) { 

    if (!file_exists($_FILES[$input]['tmp_name'])) 
     return false; 

    $sha1file = sha1_file($_FILES[$input]['tmp_name']); 
    $tmp_name = TEMP_DIR . $sha1file; 
    $new_name = $upload_subdir . '/' . substr($sha1file, 0, 5) . '_' . $_FILES[$input]['name']; 

    move_uploaded_file($_FILES[$input]['tmp_name'], $tmp_name); 
    rename($tmp_name, UPLOAD_DIR . $new_name); 

    if (file_exists(UPLOAD_DIR . $new_name)) 
     return $new_name; 
    else 
     return false; 
} 


Test:

upload_file('image' /* Input name */, 'images' /* subdir in UPLOAD_DIR (this is existing dir) */); 

Hinweise:

  1. Der os von Server CentOS
  2. UPLOAD_DIR und TEMP_DIR ist richtig absolute Richt. Auch ich testete relative dir nicht funktioniert.
  3. Ich testete direkt move_uploaded_file (ohne Datei in das temporäre Verzeichnis der aktuellen Subdomäne zu kopieren), die nicht funktioniert.
  4. Keine Warnung
+1

'move_uploaded_file()' kümmert sich nicht um den Hostnamen/die Domäne. Sagen Sie einfach, wo auf dem Server Sie die Datei speichern möchten. Wenn Sie relative URLs von der Scripts-Position aus verwenden, sollten Sie '__DIR__' verwenden, um den absoluten Pfad zum Skript zu erhalten:' upload_file (__ DIR__. '/ Image') '. –

+1

Wenn es ein Problem gibt, ist es fast immer eine der Dateizugriffsberechtigungen. Obwohl das in Subdomains nicht der Fall sein sollte. – JBH

+0

Magnus Eriksson. '__DIR __. 'Image /'' lädt die Datei in die aktuelle Subdomain –

Antwort

0

Problem gelöst anzeigt.
Dies funktioniert nicht, da PHP nicht auf andere Ordner als DOCUMENT_ROOT zugreifen kann.

Verwandte Themen