簡體   English   中英

PHP擴展(memcache | memcached)沒有在phpinfo()中顯示但在php -m和php -i中顯示?

[英]PHP Extension (memcache|memcached) not showing in phpinfo() but showing in php -m and php -i?

我在使用時將兩個模塊列為已安裝/配置:

php -m

或者如果我使用:

php -i

但是當我使用時:

$m = new Memcache;
// or
$m = new Memcache();
// or
$m = new Memcached();
//or 
$m = new Memcached;

我收到以下錯誤:

Fatal error: Class 'Memcached' not found

我在Mac-OS X(10.5.7)上運行,默認安裝apache和php。 另外,我根據php-memcached庫的要求在127.0.0.1:11211和libmemcache上運行memcached作為守護進程運行。 我已經重啟apache很多次,甚至完成了機器重啟。

有誰知道為什么模塊/擴展顯示在命令行中而不是在我的phpinfo()中? 我真的很難過,經過3個小時的谷歌搜索,我准備放棄了。

另外,請注意,我的phpinfo()輸出我的ini文件,如下所示,它們都是完全相同的文件:

Configuration File (php.ini) Path:  /etc
Loaded Configuration File:  /private/etc/php.ini 

更新:

Apache無法加載擴展。

[2010年5月14日星期五04:22:26] [warn]初始化:未配置會話緩存[提示:SSLSessionCache] PHP警告:PHP啟動:無法加載動態庫'/ usr / lib / php / extensions / no-debug -non-zts-20060613 / memcached.so' - (null)在第0行的Unknown中PHP警告:PHP啟動:無法加載動態庫'/ usr / lib / php / extensions / no-debug-non-zts-20060613 /memcache.so' - (null)在第0行的Unknown中

有誰知道為什么或如何發生這種情況? 上面引用的兩個文件都在那里。 我應該將此問題移至服務器故障嗎?

您的Web服務器可能正在使用mod_php,它是獨立(CLI)解釋器的單獨代碼。 如果他們都使用相同的ini文件,並且在ini文件中配置了memcache擴展,那么聽起來因為某些原因,mod_php無法加載擴展 - 檢查你的webserver error_log是否有啟動錯誤。

可能是mod_php是在沒有memcache支持的情況下編譯的(大多數擴展都需要將一個存根文件鏈接到php代碼中,即使大部分代碼在運行時之前都沒有鏈接)。 或者它可能是共享對象文件上的權限問題。 或者您的網絡服務器可能正在運行chroot,並且無法找到擴展名(這也意味着盡管ini文件似乎具有相同的路徑,但這與不同的根相關)。

HTH

C。

因為兩個版本使用不同的php.ini
將您的php.ini放入phpinfo()outout中注明的位置

我懷疑這個問題圍繞着權限。 當您從命令行運行php時,它將以用戶調用它的方式運行。 當作為apache模塊運行時,它以“nobody”運行。

我假設memcached.so文件或它所在的目錄沒有適當的權限。

我弄明白這個帖子,並且在我的php -i中有一個擴展名但在phpinfo()沒有完全相同的問題。 由於CentOS機器上的selinux ,我的權限問題。 我不得不更改所有權和權限,現在它按預期工作。

在環境變量中設置php路徑,如下所示。 右鍵單擊“我的電腦”屬性“高級”選項卡>“環境變量”在“系統”變量下,向下滾動以查找“路徑”,選擇並單擊“編輯”。 最后添加到php安裝的路徑(確保以分號“;”開頭)。 示例:“; C:\\ php7”單擊“確定”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM