尝试使用测试代码连接到 gandi 时出现 PEAR 错误

PEAR error trying to connect to gandi using test code

我第一次尝试连接到 gandi 时,我的脚本因错误引导的 PEAR 问题而失败:

 # php ganditest.php

PHP Warning:  require_once(XML/RPC2/Exception.php): failed to open stream: No such file or directory in /usr/local/share/pear/XML/RPC2/Client.php on line 43

Warning: require_once(XML/RPC2/Exception.php): failed to open stream: No such file or directory in /usr/local/share/pear/XML/RPC2/Client.php on line 43
    PHP Fatal error:  require_once(): Failed opening required 'XML/RPC2/Exception.php' (include_path='.:/usr/local/bin/') in /usr/local/share/pear/XML/RPC2/Client.php on line 43
Fatal error: require_once(): Failed opening required 'XML/RPC2/Exception.php' (include_path='.:/usr/local/bin/') in /usr/local/share/pear/XML/RPC2/Client.php on line 43

我尝试将其设置为 PEAR 目录:

# pear config-set bin_dir /usr/local/share/pear
config-set succeeded

# php ganditest.php
PHP Warning:  require_once(XML/RPC2/Exception.php): failed to open stream: No such file or directory in /usr/local/share/pear/XML/RPC2/Client.php on line 43

Warning: require_once(XML/RPC2/Exception.php): failed to open stream: No such file or directory in /usr/local/share/pear/XML/RPC2/Client.php on line 43
PHP Fatal error:  require_once(): Failed opening required 'XML/RPC2/Exception.php' (include_path='.:/usr/local/bin/') in /usr/local/share/pear/XML/RPC2/Client.php on line 43

Fatal error: require_once(): Failed opening required 'XML/RPC2/Exception.php' (include_path='.:/usr/local/bin/') in /usr/local/share/pear/XML/RPC2/Client.php on line 43

猫ganditest.php

<?php
require_once '/usr/local/share/pear/XML/RPC2/Client.php';

$version_api = XML_RPC2_Client::create(
    'https://rpc.gandi.net/xmlrpc/',
    array( 'prefix' => 'version.', 'sslverify' => True )
);

$apikey = 'mykey';

$result = $version_api->info($apikey);

print_r($result);
?>

如何告诉 PhP 在正确的文件夹中查找 PEAR 以便连接到 Gandi?

您刚刚设置 PEAR 以安装可执行文件,即您从命令行执行的文件,并将其安装到 /usr/local/share/pear 中,这很可能不在您的 $PATH 中:-)

要回答您的问题,您需要设置 PHP 使用的 include_path,以便它可以找到 PEAR 安装的文件。

例如:

$ cat a.php 
<?php
echo get_include_path() , "\n";

set_include_path(get_include_path() . ":/usr/local/share/pear");
echo get_include_path() , "\n";