国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

L?sung für PHP-FTP-Verbindungsprobleme in einer Containerumgebung
P粉302484366
P粉302484366 2023-08-28 23:03:17
0
1
897
<p>Ich versuche, mein PHP-Skript zu containerisieren. </p><p>Aber aus irgendeinem Grund kann keine Verbindung zu meinem FTP-Server hergestellt werden, wenn es in einem Container ausgeführt wird. </p><p>Führen Sie das Skript problemlos auf meinem lokalen Computer aus. </p><p><strong>Dockerfile:</strong></p><pre class="brush:php;toolbar:false;">FROM php:8.1-cli EXPOSE 8080 KOPIEREN ./var/www/html/ ARBEITSVERZEICHNIS /var/www/html ENTRYPOINT php -f dienen.php</pre><p><strong>PHP-Skript:</strong></p><pre class="brush:php;toolbar:false;">$ Verbindung = ftp_connect(FTP_HOST, 21, 90); ftp_pasv($connection, true); if(ftp_login($connection, FTP_USERNAME, FTP_PASSWORD)) { $stream = fopen('data://text/plain,','r'); ftp_fput($connection, $filename, $stream); } ftp_close($connection);</pre><p>Nach 90 Sekunden wird die folgende Warnung ausgegeben: </p><p><em>ftp_fput(): Connection timed out in /var/ www/html/ftp.php in Zeile 16</em></p><p>Ich habe versucht, in den Container zu gehen und den FTP-Client zu installieren. </p><p>Bei mir tritt ein ?hnlicher Zeitüberschreitungsfehler auf: Ich kann eine Verbindung zum Host herstellen, aber die Ausführung eines beliebigen Befehls führt zu einer Pause. </p><p>Ich habe auch versucht, den Container auf einem VPS auszuführen, um lokale Firewall-/Netzwerkprobleme zu beseitigen. </p><p>Aber das Problem besteht immer noch. </p><p>Wenn Sie weitere Informationen zur L?sung des Problems ben?tigen, lassen Sie es mich bitte wissen. </p>
P粉302484366
P粉302484366

Antworte allen(1)
P粉775723722

注意 PHP 的 ftp_pasv 函數(shù)的文檔(重點(diǎn)在我這里):

還要注意您沒有檢查 ftp_pasv 調(diào)用的狀態(tài)返回值,所以您不會注意到該調(diào)用是否實(shí)際成功(這很可能不會成功)。因此,您的腳本將嘗試建立主動的 FTP 連接。這在容器中不起作用(除非使用 --network=host 啟動),因?yàn)槿萜髟谥鳈C(jī)機(jī)器上通過 NAT 運(yùn)行在私有網(wǎng)絡(luò)中。

解決方案:首先登錄,然后啟用被動模式(還要始終檢查錯誤返回值;許多來自 PHP 標(biāo)準(zhǔn)庫的舊函數(shù)不會引發(fā)異常,而是依賴于錯誤返回值):

if (ftp_login($connection, FTP_USERNAME, FTP_PASSWORD))
{
    if (ftp_pasv($connection, true) === false) {
        throw new \Exception("無法啟用被動模式")
    }

    $stream = fopen('data://text/plain,','r');
    ftp_fput($connection, $filename, $stream);
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage