我已经为我的客户的项目创建了一个模块,该模块应该通过FTPS将文件发送到Web服务上。该Web服务仅允许来自某些IP地址的连接。
它可以在我的本地主机上运行,但是某些FTP命令在客户端的实时站点上不起作用。
例如,主要是我与ftp_ssl_connect连接。它可以在客户的站点上运行。
然后,我使用ftp_login登录。它也可以在客户的站点上运行。
然后,我使用ftp_pasv进入被动模式。它也可以在实时站点上运行。
但是,当我尝试使用ftp_nlist命令获取文件列表时,它可以从我的本地主机上运行,但拒绝在客户端站点上执行。
此外,当我使用命令ftp_put发送文件时,该文件可在我的本地主机上运行,但拒绝在客户端项目中运行。
$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(搜索)按钮并编写disabled_function,您将在其中看到所有禁用的功能,或者使用以下代码创建文件并从浏览器访问它(如果您的提供者也阻止了ini_get函数,则可能无法使用)
<?php echo "Disabled functions: ".ini_get('disable_functions')."\n"; ?>
如果您的功能被禁用,则可以通过在目录中创建php.ini文件来启用它们,或者请求托管服务提供商启用它们。
启用功能:使用以下代码创建php.ini
disable_functions = ""
但是,如果您的托管环境优先使用默认的php.ini,则可能无法正常工作,因此可以更好地与提供者联系并请求他们启用。