php7.3 ftpu cdup()抛出;“CDUP成功”;某些FTP服务器中出现异常 用于($i=1;$iconn); 如果(!$res){ 抛出新\异常(“ftp\U cdup失败”); } }捕获(\异常$e){ /** *:ftp_cdup():cdup成功。“/”是当前目录 */ 如果(strpos($e->getMessage(),'ftp\u cdup():cdup successful')>=0){ //正常的 }否则{ 抛出新的\异常('ftp_cdupfail:'。$e->getMessage()); } } }
例外是 ftp_cdup():cdup成功。“/”是当前目录php7.3 ftpu cdup()抛出;“CDUP成功”;某些FTP服务器中出现异常 用于($i=1;$iconn); 如果(!$res){ 抛出新\异常(“ftp\U cdup失败”); } }捕获(\异常$e){ /** *:ftp_cdup():cdup成功。“/”是当前目录 */ 如果(strpos($e->getMessage(),'ftp\u cdup():cdup successful')>=0){ //正常的 }否则{ 抛出新的\异常('ftp_cdupfail:'。$e->getMessage()); } } },php,ftp,Php,Ftp,例外是 ftp_cdup():cdup成功。“/”是当前目录 事实上这是正常的。首先,我不认为ftp\u cdup(或任何其他PHP ftp函数)引发任何异常。您可能有一些错误处理程序,不是吗 无论如何,PHP希望服务器以代码250响应成功的CDUP命令。您的服务器可能会响应一些其他2xx成功代码(如plain 200)。我不认为PHP就在这里。我认为你对此无能为力 您可以执行以下操作,而不是使用ftp\u cdup: for($i=1;$i<=$path_div;$i++)
事实上这是正常的。首先,我不认为
ftp\u cdup
(或任何其他PHP ftp函数)引发任何异常。您可能有一些错误处理程序,不是吗
无论如何,PHP希望服务器以代码250响应成功的
CDUP
命令。您的服务器可能会响应一些其他2xx成功代码(如plain 200)。我不认为PHP就在这里。我认为你对此无能为力
您可以执行以下操作,而不是使用ftp\u cdup
:
for($i=1;$i<=$path_div;$i++)
{
try{
$res = ftp_cdup($this->conn);
if(!$res){
throw new \Exception('ftp_cdup fail');
}
}catch (\Exception $e){
/**
* :ftp_cdup(): CDUP successful. "/" is current directory
*/
if(strpos($e->getMessage(),'ftp_cdup(): CDUP successful')>=0){
//normal
}else{
throw new \Exception('ftp_cdupfail:'.$e->getMessage());
}
}
}
并检查2xx代码的$resp
或者只使用ftp\u chdir
而不是ftp\u cdup
我不认为FTP RFC 959真的要求响应必须是200。这只是一个例子。问题可能来自
CWD
和CDUP
示例中的不一致性。我希望两者使用相同的代码。但是RFC显示250表示CWD
,而200表示CDUP
。甚至RFC也表示:“CDUP的回复代码与CWD的回复代码相同。”
$resp = ftp_raw("CDUP");