PHP上的某些FTP命令可在本地主机上运行, 但不能在客户端实时站点上运行

问题描述 投票:0回答:1

我已经为我的客户的项目创建了一个模块,该模块应该通过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"
  };

我不知道问题出在哪里以及如何解决。

您能告诉我,问题出在哪里,怎么办?

php ftps
1个回答
0
投票
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,则可能无法正常工作,因此可以更好地与提供者联系并请求他们启用。

© www.soinside.com 2019 - 2024. All rights reserved.