Я создал метод, который позволяет пользователю экспортировать базу данных в CSV, а затем загрузить ее на внешний FTP-сервер.
Я проверил это на своей локальной машине, и все, кажется, работает отлично.
Однако, как только я отправил код в среду prod, соединение, похоже, перестало работать. Я увеличил время ожидания на сервере, но это не помогло.
Я получаю следующую ошибку,
There was an error in uploading the file :::: Failed to connect to xxx.xxx.xxx port 990: Connection timed out
код
if ($fp = fopen($local, 'r')) {
$ftp_server = 'ftps://' . $this->server . '/' . $remote;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ftp_server);
curl_setopt($ch, CURLOPT_PORT, 990);
curl_setopt($ch, CURLOPT_USERPWD, $this->username . ':' . $this->password);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FTP_SSL, CURLFTPSSL_ALL);
curl_setopt($ch, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_TLS);
curl_setopt($ch, CURLOPT_UPLOAD, true);
curl_setopt($ch, CURLOPT_INFILE, $fp);
$result = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);
if ($err) {
mail(ERROR_EMAIL, 'ERROR - Uploading file failed!.', date('F j, Y, g:i a e O')."] - There was an error in uploading the file :::: " . $err);
error_log("[".date('F j, Y, g:i a e O')."] - There was an error in uploading the file :::: " . $err . "\n", 3, __DIR__."/errors.log");
}
error_log("[".date('F j, Y, g:i a e O')."] - File Successfully Uploaded.\n", 3, __DIR__."/errors.log");
return !$err;
}
Это содержимое функции, найденной в классе. Интересно, если я что-то упустил.
$remote -> this is the file path to the remote file. on the server.
$local -> this is the file on the local server.
Проблема была с портом 990 не допускается. Это была проблема с хостинг-провайдером, поэтому следили за другим решением.
Спасибо за комментарий, сэкономил мне время.
Других решений пока нет …