Php

使用 nginx 啟用 PHP 的 SSH2 擴展

  • January 15, 2012

好的,所以通常我的系統管理員會處理這個,但他最近相當懶散,我不能再等了。

我使用 PECL 安裝了 PHP 的 ssh2 擴展。我已將extension=ssh2.sophp.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 不匹配的問題。

您需要重新啟動 PHP 守護程序 - 如果 Web 伺服器是 nginx,那麼 PHP 可能正在作為 fastcgi 或 PHP-FPM 下執行。不幸的是,我不知道 CentOS 知道用於重新啟動該守護程序的確切命令……

引用自:https://serverfault.com/questions/350057