【问题标题】:How to install phpseclib?如何安装 phpseclib?
【发布时间】:2015-05-28 19:41:32
【问题描述】:

我已经在我的机器上安装了 Apache,所以我可以使用 localhost 作为 PHP 服务器。这样可行。现在我正在尝试使用 PHP 通过 SFTP 将文件发送到另一台服务器。我环顾四周,看到推荐使用 phpseclib。我似乎无法弄清楚如何安装 phpseclib。以下是网站给出的台词:

set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib');
include('Net/SFTP.php');

你必须设置包含路径。

我明白这些词的意思,但我无法让它发挥作用。我正在使用Mac。我的服务器在/Users/diego/Sites/。我需要将phpseclib 文件夹放在哪里?我需要在我的 php 文件中添加哪些行以便包含 phpseclib

【问题讨论】:

    标签: php installation phpseclib


    【解决方案1】:

    我尝试在 linux 机器上安装 phpseclib。它对我来说非常有效。我希望您的 Mac 上需要类似的配置。

    在linux服务器上执行以下命令。

    sudo apt-get install php5-pgsql php-pear
    sudo pear channel-discover phpseclib.sourceforge.net
    sudo pear remote-list -c phpseclib
    sudo pear install phpseclib/Net_SSH2
    sudo service apache2 restart
    

    在 Mac 上,使用 mac 端口执行以下命令 sudo 端口 -v 自我更新 sudo 端口安装 php54-ssh2

    #add this to the php.ini file /etc/php.ini, it can be placed at the end of the file
    extension=/opt/local/lib/php54/extensions/no-debug-non-zts-20100525/ssh2.so
    sudo /usr/sbin/apachectl restart
    

    在 Mac 上,使用 homebrew 执行以下命令。 酿造安装php54-ssh2

    下载 phpseclib 库并包含到您的项目目录中。

    在相关的php文件中添加如下代码。

    include('phpseclib1.0.5/Net/SFTP.php');
    
    set_include_path(get_include_path().PATH_SEPARATOR.'phpseclib');
    define('NET_SFTP_LOGGING', NET_SFTP_LOG_COMPLEX);
    
    $sftp = new Net_SFTP('555.55.55.55', 22);
    
    if(!$sftp->login('username', 'password')) {
        echo $sftp->getSFTPLog();
        die('Login failed!');
    } else {
        echo $sftp->pwd();
        echo $upload = $sftp->put('/sftp/'.$filename, $uploadedfile, NET_SFTP_LOCAL_FILE);
    }
    

    【讨论】:

      【解决方案2】:

      set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib'); 将添加 phpseclib 作为相对路径。因此,include('Net/SFTP.php') 将包含 phpseclib/Net/SFTP.php,但这与您的工作目录有关。

      PEAR 通常在 include_path 中有一个绝对路径。所以这是你可以尝试做的事情。将 phpseclib 放入某个目录(可能在文档根目录之外),然后将该目录放入您的 include_path。

      请注意,如果您从 sourceforge.net 下载了 phpseclib,或者您使用的是 1.0 分支,则这一点更为重要。

      【讨论】:

        【解决方案3】:

        感谢 Diego 提供安装 PEAR 的提示。我通过以下步骤完成了它:

        首先,安装PEAR

        $ wget http://pear.php.net/go-pear.phar
        $ php go-pear.phar
        

        如果 wget 命令不起作用,请安装该软件包以使其正常工作。

        $ sudo apt-get install wget
        

        成功安装PEAR后,用这个guide进行配置。

        php.ini 文件可以在/etc/php5/apache2 中找到。您必须修改此文件。

        突然,我测试了新的库。但是我得到了一堆错误,就像在这个stackoverflow post 描述的一样。 对于那个问题,我在stackoverflow post 中找到了解决方案。

        【讨论】:

          【解决方案4】:

          我按照this guide. 安装了 PEAR,让它工作了

          按照上面的指南,我发现 apache2 正在我的 /etc/ 文件夹中寻找 php.ini。但是我遇到了一个问题。在我的/etc/ 文件夹中没有php.ini 文件。但是有php.ini.defualt。所以我将php.ini.default'另存为'php.ini,然后修改了include_path。

          ; UNIX: "/path1:/path2"
          ;include_path = ".:/php/includes"
          include_path = ".:/Users/diego/pear/share/pear:/php/includes"
          

          PHP 不再抛出无法找到phpseclib 的错误。

          【讨论】:

            猜你喜欢
            • 2020-06-29
            • 1970-01-01
            • 1970-01-01
            • 2021-06-20
            • 2023-02-17
            • 1970-01-01
            • 1970-01-01
            • 2016-01-20
            • 1970-01-01
            相关资源
            最近更新 更多