好的,通常我的系统管理员会处理这个问题,但是他最近比较懒散,我不能再等了。
我使用 PECL 安装了 PHP 的 ssh2 扩展。我已将 放入extension=ssh2.so
php.ini 中,并检查 ssh2.so 是否在 中extension_dir
。当我 时php -m | grep ssh2
,它显示ssh2
。当我运行此脚本时:
<?php
if (function_exists('ssh2_connect'))
{
echo "true";
}
?>
并从命令行运行它,它会回显true
。
当我运行phpinfo()
网络服务器时,我找不到ssh2
任何地方。当我运行ssh2_connect()
网络服务器时,它告诉我该函数未定义。
我的操作系统是 CentOS 5.7 PHP 版本 5.2.14 nginx/0.7.67
我在 Google 上搜索了所有方法,尝试了所有能找到的方法,但还是没能找到答案。有人能帮忙吗?
编辑:
为了让你们了解最新情况,Shish 是对的。我找到了一个程序php-fpm
,当调用它时,它似乎就是我正在寻找的。然而,由于 API 编号不匹配,它无法加载 ssh2 扩展
Starting php_fpm PHP Warning: PHP Startup: ssh2: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
done
经过一些简短的研究,似乎这可能是我通过 PECL 安装 ssh2 模块的问题,并且我相信我的系统管理员从源代码编译了 PHP。
现在正在调查此事。
编辑:
经过进一步的研究,我发现我的系统上安装了两个版本的 PHP。一个可能是我通过 yum 安装的,另一个可能是我的系统管理员安装的。它似乎php-fpm
正在加载他安装的那个,当然我的更新不会影响它。也许我会等他,以防我搞砸了什么。
编辑:
再三考虑,我还是打算把所有东西都删掉,自己试试。最坏的情况下,我只需要让他重新安装所有东西,最好的情况下,一切正常,我就不用再等他了。祝我好运。
编辑:
不。划掉。不知道我在做什么。我觉得我讨厌我的生活。我现在在 Chrome 中打开了大约 30 个标签。我要去睡觉了。希望有人能在我睡觉的时候提供进一步的见解。
编辑:
是的,可能毁掉了一切。我会尝试修复我的损坏,然后让我的系统管理员再次处理。我会接受当前的答案,因为它是正确的。过去只是模块 API 不匹配的问题。
答案1
您需要重新启动 PHP 守护程序 - 如果 Web 服务器是 nginx,那么 PHP 可能以 fastcgi 或 PHP-FPM 运行。不幸的是,我不了解 CentOS,不知道重新启动该守护程序的确切命令...