【问题标题】:Execute PHP script on FTP server connected to in another local PHP script在连接到另一个本地 PHP 脚本的 FTP 服务器上执行 PHP 脚本
【发布时间】:2021-07-26 09:37:38
【问题描述】:

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

<?php
// set up basic connection
$ftp_server = "localhost";
$conn_id = ftp_ssl_connect($ftp_server);

// login with username and password
$ftp_user_name = "myuser";
$ftp_user_pass = "mypass";
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
// check connection
if ((!$conn_id) || (!$login_result)) {
        echo "FTP connection has failed!";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name";
        exit;
    } else {
        echo "Connected to $ftp_server, for user $ftp_user_name";
    }

$buff = ftp_rawlist($conn_id, '../ftpdest/index.php?action=download_now');
var_dump($buff);
ftp_close($conn_id);

【问题讨论】:

    标签: php ftp


    【解决方案1】:

    一些,但不多,FTP 服务器支持SITE EXEC command,允许您在服务器上执行任意或选定的 shell 命令。命令可以远程php二进制。

    在 PHP 中,您可以使用 ftp_site function

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

    但这可能不适用于您的服务器。在大多数情况下,您将无法通过 FTP 执行 shell 命令。


    如果你的FTP服务器实际上是一个web服务器,你可以使用FTP上传一个PHP脚本,然后使用web服务器来执行脚本。

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

    如果您有 SSH/shell 访问权限,请使用 SSH 执行您的 PHP 脚本/代码。 SSH 是为执行脚本/代码而设计的 API(与 FTP 相反)。

    【讨论】: