我已经为我客户的项目创建了一个模块,该模块应该通过FTPS将文件发送到web服务上。web服务只允许从某些IP地址进行连接。
它可以在我的本地主机上运行,但是一些FTP命令在客户端的实时站点上不起作用。
例如,我主要与ftp_ssl_connect联系。它在客户的网站上工作。
然后,我用ftp_login登录。它也适用于客户的网站。
然后,我使用ftp_pasv切换到被动模式。它也适用于现场。
但是当我试图用ftp_nlist命令获取文件列表时,它从我的localhost工作,但拒绝在客户端的网站上执行。
此外,当我发送带有命令ftp_put的文件时,它在我的localhost上工作,但拒绝从客户端的项目工作。
$config = yrv_eboks_get_config_data();
$conn = ftp_ssl_connect($config->ftp_host, 21, 15);
if (ftp_login($conn, $config->ftp_login, $config->ftp_password)) {
if (ftp_pasv($conn, true)) {
$files = ftp_nlist($conn, ".");
var_dump($files);
}
} else {
// "Could not login via login via FTPS"
};
我不知道问题出在哪里,也不知道如何解决。
你能告诉我,问题在哪里,该怎么办?
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
写这在顶部的文件和访问PHP文件您的浏览器将显示错误.你确定这些功能是启用在您的主机?因为共享服务器禁用了许多功能来防止滥用,例如源代码、符号链接、ftp_put等。您可以使用下面的代码创建一个phpfile来检查哪个函数被禁用
<?php
phpinfo();
?>
将上述代码另存为anyname。php然后访问它,您将在那里看到php信息。按ctrl f(搜索)按钮并写入禁用函数,您将看到所有禁用的函数,或使用以下代码创建一个文件并从浏览器访问它(如果您的提供商也阻止了ini_get函数,则可能无法工作)
<?php echo "Disabled functions: ".ini_get('disable_functions')."\n"; ?>
如果您的函数被禁用,您可以通过创建php来启用它们。ini文件在您的目录中,或请求您的托管提供商启用它们。
启用函数:创建php。带有以下代码的ini
disable_functions = ""
但是,如果您的托管环境是使用默认php.ini优先级,则可能无法正常工作,以便更好地与提供商联系,并请求他们启用。