使用 nginx 啟用 PHP 的 SSH2 擴展
好的,所以通常我的系統管理員會處理這個,但他最近相當懶散,我不能再等了。
我使用 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 不匹配的問題。
您需要重新啟動 PHP 守護程序 - 如果 Web 伺服器是 nginx,那麼 PHP 可能正在作為 fastcgi 或 PHP-FPM 下執行。不幸的是,我不知道 CentOS 知道用於重新啟動該守護程序的確切命令……