我使用 PHP 和 Curl 连接到 FTP 服务器,奇怪的是,当我在本地设置中尝试我的代码时,它以隐式 TLS 和显式 TLS 方式工作,但是当我在任何服务器上运行相同的代码时,它不会不工作并返回Connection refused。
PHP代码是:
<?php
function simple_list_test() {
$curlopts = [];
$debug = true;
$return = null;
$curlopts[CURLOPT_USERPWD] = "{$user}:{$password}";
$curlopts[CURLOPT_SSL_VERIFYPEER] = false;
$curlopts[CURLOPT_SSL_VERIFYHOST] = false;
$curlopts[CURLOPT_FTP_SSL] = CURLFTPSSL_TRY;
$curlopts[CURLOPT_FTPSSLAUTH] = CURLFTPAUTH_TLS;
$curlopts[CURLOPT_RETURNTRANSFER] = true;
$curlopts[CURLOPT_URL] = "ftp://ftp.avidafinance.com:21/"; // I tried with ftps:// protocol too it works on local but not when you run it on a hosting
$curlopts[CURLOPT_FTPLISTONLY] = 1;
$curlopts[CURLOPT_UPLOAD] = 0;
$curlopts[CURLOPT_RETURNTRANSFER] = 1;
$ch = curl_init();
foreach($curlopts as $key => $value) {
curl_setopt($ch, $key, $value);
}
if ($debug) {
curl_setopt($ch, CURLOPT_VERBOSE, true);
$verbose = fopen('php://temp', 'w+');
curl_setopt($ch, CURLOPT_STDERR, $verbose);
}
$return = curl_exec($ch);
if ($debug) {
rewind($verbose);
$verboseLog = stream_get_contents($verbose);
echo "Verbose information:\n<pre>", htmlspecialchars($verboseLog), "</pre>\n";
}
if ($error = curl_error($ch)) {
throw new Exception($error);
}
return $return;
}
我花了一整天的时间,尝试了很多方法,包括设置CURLOPT_PORT,设置ftps://协议,增加超时,包括服务器.crt和.pem带有curl的证书,但没有一个起作用,所以我想知道是否有人可以帮助我,
简而言之,我需要一个Explicit FTP Over TLS
连接,我尝试过curl
, ftp_ssl_connect
fsockets
, .... 它们都不起作用,我将不胜感激任何帮助,它不一定必须与curl一起使用
眼眸繁星
桃花长相依
HUWWW