web-dev-qa-db-ja.com

nginxでPHPのSSH2拡張機能を有効にする

さて、通常は私のシステム管理者がこれを処理しますが、彼は最近かなり緩んでいて、私はもう待つことができません。

PECLを使用してPHPのssh2拡張機能をインストールしました。 php.iniに_extension=ssh2.so_を配置し、ssh2.soが_extension_dir_にあることを確認しました。 _php -m | grep ssh2_とすると、_ssh2_と表示されます。このスクリプトを実行すると、次のようになります。

_<?php

if (function_exists('ssh2_connect'))
{
    echo "true";
}

?>
_

コマンドラインから実行すると、trueがエコーされます。

Webサーバーでphpinfo()を実行すると、_ssh2_がどこにも見つかりません。 Webサーバーでssh2_connect()を実行すると、関数が未定義であることが通知されます。

私のOSはCentOS5.7 PHPバージョン5.2.14nginx/0.7.67

私はグーグル中を探していて、見つけたすべてを試しましたが、それを理解することはできません。誰か助けてもらえますか?

編集:

皆さんを最新の状態に保つためだけに、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モジュールをインストールすることが問題である可能性があり、私のsysadminがソースからPHPをコンパイルしたと思います。

今それを調べています。

編集:

追加の調査の結果、2つのバージョンのPHPがシステムにインストールされているようです。1つはyum経由でインストールしたもので、もう1つはシステム管理者がインストールしたものです。_php-fpm_が読み込まれているようです。彼がインストールしたもので、当然私のアップデートはそれに影響を与えていません。何かを台無しにした場合に備えて、おそらく彼を待ちます。

編集:

考え直して、私はすべてを削除して自分で試してみるつもりです。最悪の場合、私は彼にすべてを再インストールさせる必要があります、そしてせいぜいそれはうまくいくでしょう、そして私はもう彼を待つ必要はありません。幸運を祈ります。

編集:

いいえ。それをスクラッチします。私が何をしているのか分かりません。私は自分の人生が嫌いだと思います。 Chrome今、約30個のタブを開いています。寝ます。寝ている間に誰かがさらに洞察を提供してくれることを願っています。

編集:

うん、おそらくすべてを破壊した。損傷を修復してから、システム管理者に再度処理させます。まあ、それは正しかったので、現在の答えを受け入れるつもりです。これまでは、モジュールAPIの不一致に関する問題でした。

2
Rob

PHPデーモンを再起動する必要があります-Webサーバーがnginxの場合、PHPはおそらくfastcgiとして、またはPHP-FPMで実行されています。残念ながら私はそのデーモンを再起動するために使用する正確なコマンドを知るためにCentOSを知りません...

3
Shish