2011-09-12 198 views
1

我有個很奇怪的問題。一個Web應用程序從一臺服務器移到另一臺服務器。此後,FTP上傳不再起作用。PHP FTP文件上傳不起作用

$ftp = ftp_connect('ftphost'); 
if ($ftp == false) { 
    error_log('FTP Connect not possible'); 
} 
$fp = fopen($filename, 'r'); 
if ($fp == false) { 
    error_log('Opening file not possible'); 
} 
$login = ftp_login($ftp, 'username', 'password'); 

if ($login == false) { 
    error_log('FTP login not possible'); 
} 

$status = ftp_fput($ftp, basename($filename), $fp, FTP_BINARY); 
if ($status == false) { 
    error_log('FTP file upload not possible'); 
} 

錯誤消息是'FTP文件上傳不可能'。我檢查了我所知道的一切。 Selinux已禁用。當我手動進行FTP上傳時(在帶有「ftp」工具的控制檯上)它可以正常工作。文件名是隨機生成的,並且總是如下所示:erefsdgftef.xml(無空格)

此代碼是Magento中最後一個命令步驟的一部分,因此將始終通過apache httpd啓動。

我沒有收到比之前發佈的錯誤消息更多的錯誤消息。

新服務器上的服務器配置必須不同。有人有更多的想法嗎?

+1

不應該在serverfault? –

+0

ftp_pasv呢?也許該FTP不支持活動連接? (我不知道) – MiPnamic

+0

如果你可以用相同的用戶名+密碼手動登錄到同一個FTP服務器 - 這聽起來像是一個代碼問題。由於您可以連接到服務器,因此DNS或路由似乎不成問題。您可以檢查基本名稱($ filename)的外觀如預期 – cloakedninjas

回答

0

不知道這是你的答案,但你是否已經試圖在被動模式下做到這一點?

http://nl3.php.net/manual/en/function.ftp-pasv.php

+0

MiPnamic比我早一點 –

+0

正如我寫的。我在控制檯上試了一下,它使用了一個活動的連接。它也適用於舊服務器。 –