2016-04-18 1 views
2

Ich habe den ganzen Tag googlen versucht alles, was ich finden kann, aber nichts funktioniert. Ich fange an verzweifelt zu werden.FTP-Datei-Upload-Probleme in PHP

Ich versuche, ein Skript zu machen, das eine Datei auf meinen FTP-Account hochladen kann, aber bis jetzt konnte ich es nicht funktionieren.

Ich erhalte diese Fehler:

Warning: ftp_put(): Opening data channel for file transfer. in C:\xampp\htdocs\AA\dwsite\ftptest\up.php on line 49

Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\AA\dwsite\ftptest\up.php on line 49

Dies ist der Code Ich verwende:

<?php 
if (isset ($_FILES ['be_file'])) { 

    $file_size = $_FILES ['be_file'] ['be_file']; 
    $file_type = $_FILES ['be_file'] ['type']; 
    $source_file = $_FILES ['be_file'] ['tmp_name']; 
    $destination_file = $_FILES ['be_file'] ['name']; 
//ftp details 
    $ftp_server = 'ip of ftp'; 
    $ftp_port = 'port number'; 
    $ftp_user_name = 'username'; 
    $ftp_user_pass = 'pass'; 

    // set up basic connection 
    $conn_id = ftp_connect ($ftp_server, $ftp_port); 
    ftp_pasv ($conn_id, true); 
    // login with username and password 

    $login_result = ftp_login ($conn_id, $ftp_user_name, $ftp_user_pass); 

    // upload a file 
    if (ftp_put ($conn_id, $destination_file, $source_file, FTP_BINARY)) { 
     echo "successfully uploaded $source_file\n"; 
     exit(); 
    } else { 
     echo "There was a problem while uploading $source_file\n"; 
     exit(); 
    } 
    // close the connection 
    ftp_close ($conn_id); 
    echo "Success"; 
} 

?> 
<html> 
<body> 

    <form action="" method="POST" enctype="multipart/form-data"> 
     <input type="file" name="file" /> <input type="submit" /> 

     <ul> 
      <li>Sent file: <?php echo $_FILES['be_file']['name']; ?> 

      <li>File size: <?php echo $_FILES['be_file']['size']; ?> 

      <li>File type: <?php echo $_FILES['be_file']['type']?> 

     </ul> 

    </form> 

</body> 
</html> 

Antwort

2

max_execution_time integer

  • max_execution_time = 300 in Ihrer PHP hinzufügen. Ini-Dateiserver. Dann starte deinen php-fpm Dienst neu und starte deinen Server neu.
  • Oder fügen Sie set_time_limit(0); in Ihrem Code hinzu.
  • Oder Wenn Sie den Zugriff auf die Datei php.ini havn't, können Sie die maximale Ausführungszeit wie folgt erweitern: ini_set('max_execution_time', 300); //300 seconds = 5 minutes

Damit wird die maximale Zeit in Sekunden ein Skript erlaubt, bevor es zu laufen wird vom Parser beendet. Dies verhindert, dass schlecht geschriebene Skripts den Server binden. Die Standardeinstellung ist 30. Wenn Sie PHP über die Befehlszeile ausführen, ist die Standardeinstellung 0.

Die maximale Ausführungszeit wird nicht von Systemaufrufen, Stream-Operationen usw. beeinflusst. Weitere Informationen finden Sie in der Funktion set_time_limit().

Sie können diese Einstellung nicht ändern, wenn ini_set() im abgesicherten Modus ausgeführt wird. Die einzige Problemumgehung besteht darin, den abgesicherten Modus zu deaktivieren oder das Zeitlimit in der php.ini zu ändern.

Php doc -> Max_execution_time

+1

Oder fügen Sie 'set_time_limit (0);' in Ihrem Code. Vielleicht können Sie die Antwort @Pierre damit aktualisieren. – walkingRed

+0

Also habe ich die set_time_limit (0) hinzugefügt; zu meinem Code und der Ausführungszeit Fehler ist weg, aber ich bekomme immer noch die "Warnung: ftp_put(): Eröffnung Datenkanal für die Dateiübertragung. in C: \ xampp \ htdocs \ AA \ dwsite \ ftptest \ up.php in Zeile 49 "Ich versuche, ein JPG-Bild von 150kb Größe hochzuladen. sollte es wirklich so lange dauern? und genau wie vorher, ist nichts auf ftp account hochgeladen. – Ugis

+0

Haben Sie in Ihrer php.ini getestet und starten Sie Ihren php-fpm Dienst und Server neu? – Pierre