我已经在互联网上搜索了答案,但仍然没有得到答案
问题是我无法访问远程服务器的操作系统。我可以将脚本或任何文件传输到那里并在那里运行脚本
所以我不知道如何在远程操作系统中运行任何安装命令。
我可以通过下载软件包安装扩展软件包,解压缩,然后将API文件放在服务器的httpdocs文件夹中,然后在我的脚本中“包含”以供使用吗?
在一些Web教程中,他们教导说,为了检查服务器中是否安装了PEAR,我们可以在php脚本中运行phpinfo(),然后检查configure命令以查看它是否为--with-pear或 - 没有梨。但我只是在configure命令行中看不到它们中的任何一个!
他们声称,除了PHP版本4.3之外,我们已经安装了PEAR。我的版本是PHP版本5.2.17。但我没有办法检查它是否真的安装过。
答案 0 :(得分:1)
很多问题 - 让我试着逐一回答每一个问题。
默认情况下应启用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包),则最好如下:
include_path
将以下内容添加到您的脚本中:
重要的是你的新“路径”首先出现 - 前置意味着首先搜索它的库。因此,例如,如果您的PEAR版本比服务器上已有的版本更新,它将使用它。减少副作用。
在大多数情况下,您无法在没有访问权限的服务器上安装pecl扩展。您可以尝试在虚拟机(具有相同的操作系统)上预编译扩展,然后上载.so
文件并使用dl()
在运行时加载它,但这可能不起作用在大多数情况下。
我希望这是有道理的。
想象一下这段代码:
<?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.ini
或set_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