如何在远程linux服务器上安装pear,pecl扩展到php

时间:2012-03-03 02:02:41

标签: php install pear pecl

我已经在互联网上搜索了答案,但仍然没有得到答案 问题是我无法访问远程服务器的操作系统。我可以将脚本或任何文件传输到那里并在那里运行脚本 所以我不知道如何在远程操作系统中运行任何安装命令。

我可以通过下载软件包安装扩展软件包,解压缩,然后将API文件放在服务器的httpdocs文件夹中,然后在我的脚本中“包含”以供使用吗?

在一些Web教程中,他们教导说,为了检查服务器中是否安装了PEAR,我们可以在php脚本中运行phpinfo(),然后检查configure命令以查看它是否为--with-pear或 - 没有梨。但我只是在configure命令行中看不到它们中的任何一个!

他们声称,除了PHP版本4.3之外,我们已经安装了PEAR。我的版本是PHP版本5.2.17。但我没有办法检查它是否真的安装过。

1 个答案:

答案 0 :(得分:1)

很多问题 - 让我试着逐一回答每一个问题。

查找PEAR

默认情况下应启用PEAR - 这可以解释您在configure-string中没有看到这一点。

另一个测试是检查include_path - /usr/local/pear的值,/usr/share/php这些值(= PEAR安装的位置)取决于操作系统。您可以通过phpinfo()或:

查看此信息
<?php
var_dump(ini_get('include_path'));
// or
var_dump(get_include_path());

要最终检查是否安装了PEAR,请尝试以下代码:

<?php
require_once 'PEAR.php';

没有错误?这意味着PEAR已安装并正确配置(在include_path中)。

本地 PEAR树

如果未安装PEAR,或者您没有该位置的写入权限(或者您的管理员无法为您安装PEAR包),则最好如下:

  • 在本地工作站上安装PEAR和所有必需的软件包
  • 将整个梨树从工作站复制到服务器
  • 调整脚本中的include_path

调整include_path

  1. 我们在服务器上说你的目录是:/var/example.org/public
  2. 将您的整个PEAR树(从本地)上传到:/var/example.org/public/pear
  3. 将以下内容添加到您的脚本中:

  4. 重要的是你的新“路径”首先出现 - 前置意味着首先搜索它的库。因此,例如,如果您的PEAR版本比服务器上已有的版本更新,它将使用它。减少副作用。

    PHP扩展

    在大多数情况下,您无法在没有访问权限的服务器上安装pecl扩展。您可以尝试在虚拟机(具有相同的操作系统)上预编译扩展,然后上载.so文件并使用dl()在运行时加载它,但这可能不起作用在大多数情况下。

    我希望这是有道理的。

    更新:include_path primer

    想象一下这段代码:

    <?php
    require 'PEAR.php';
    

    这将使PHP搜索include_path以获取PEAR.php的位置。

    典型路径如下:

    .:/usr/share/php
    

    这意味着include_path目前包含两个目录(:是分隔符):

    • 当前路径:.
    • 路径/usr/share/php

    这些路径的顺序对PHP至关重要:

    • 如果在当前目录中找到PEAR.php(来自我们的示例),则首先包含它
    • 如果PEAR.php仅在/usr/share/php中,PHP仍将首先搜索当前目录

    include_path通常使用php.iniset_include_path(...)ini_set('include_path', ...)或运行时(执行脚本时)设置。要获取包含路径的当前值,您也可以使用get_include_path()ini_get('include_path')

    为避免PHP搜索include_path,您可以使用以下内容:

    <?php
    require '/usr/share/php/PEAR.php'
    

    绝对路径阻止PHP使用include_path。但由于PEAR的位置在各种Linux发行版,Unix,MacOSX或Windows上都没有标准化,因此不建议这样做。

    HTH