在连接的服务器上执行php ftp脚本

mklgxw1f  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(413)

连接服务器时是否可以在服务器上执行php脚本(不在构建连接的服务器上)?

  1. <?php
  2. // set up basic connection
  3. $ftp_server = "localhost";
  4. $conn_id = ftp_ssl_connect($ftp_server);
  5. // login with username and password
  6. $ftp_user_name = "myuser";
  7. $ftp_user_pass = "mypass";
  8. $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
  9. ftp_pasv($conn_id, true);
  10. // check connection
  11. if ((!$conn_id) || (!$login_result)) {
  12. echo "FTP connection has failed!";
  13. echo "Attempted to connect to $ftp_server for user $ftp_user_name";
  14. exit;
  15. } else {
  16. echo "Connected to $ftp_server, for user $ftp_user_name";
  17. }
  18. $buff = ftp_rawlist($conn_id, '../ftpdest/index.php?action=download_now');
  19. var_dump($buff);
  20. ftp_close($conn_id);
8gsdolmq

8gsdolmq1#

一些(但不是很多)ftp服务器支持 SITE EXEC command 允许您在服务器上执行任意或选定的shell命令。该命令可以是远程的 php 二元的。
在php中,您可以使用 ftp_site 功能:

  1. ftp_site($conn_id, "EXEC php -r \"echo 'Hello world!';\"");

但这可能不适用于您的服务器。在大多数情况下,您将无法通过ftp执行shell命令。
如果您的ftp服务器实际上是web服务器,则可以使用ftp上载php脚本,然后使用web服务器执行脚本。

  1. ftp_put($conn_id, "/httpdocs/script.php", "/local/path/script.php");
  2. file_get_contents("https://example.com/script.php");

如果您具有ssh/shell访问权限,请使用ssh执行php脚本/代码。ssh是为执行脚本/代码而设计的api(与ftp相反)。

相关问题