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

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

连接服务器时是否可以在服务器上执行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);
8gsdolmq

8gsdolmq1#

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

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相反)。

相关问题