2010-05-14 22 views
6

我收到的安裝/配置列出兩個模塊,當我使用:PHP擴展(memcache | memcached)不顯示在phpinfo()中,但顯示在php -m和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。此外,我還有memcached作爲守護進程在127.0.0.1:11211和libmemcache上運行,正如php-memcached庫所要求的那樣。我重新啓動了apache噸,甚至重啓了機器。

有誰知道爲什麼模塊/擴展顯示在命令行但不是在我的phpinfo()?在我用了3個小時的谷歌搜索之後,我真的很難過,我準備放棄。

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

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

UPDATE:

Apache是​​無法加載擴展。

[Fri May 14 04:22:26 2010] [warn] Init: Session Cache is not configured [hint: SSLSessionCache] PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcached.so' - (null) in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20060613/memcache.so' - (null) in Unknown on line 0

有沒有人知道爲什麼會發生這種情況?上面引用的兩個文件都在那裏。我應該將此問題轉移到服務器故障嗎?

回答

3

,因爲這兩個版本使用不同php.ini
把php.ini到位置,在phpinfo()函數指出outout

+0

這是我的phpinfo輸出: 配置文件(php.ini中)路徑:\t /等 加載的配置文件:\t /private/etc/php.ini 兩者是相同的。 – Auston 2010-05-14 07:26:40

4

你的Web服務器可能使用mod_php的,這是從獨立的代碼,一個單獨的位(CLI)翻譯。如果他們都使用相同的ini文件,並且在ini文件中配置了memcache擴展名,那麼聽起來像是出於某種原因,mod_php無法加載擴展名 - 請檢查您的webserver error_log是否存在啓動錯誤。

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

HTH

C.

+0

(或者你可能沒有重新啓動你的網絡服務器,因爲改變了配置?) – symcbean 2010-05-14 08:16:54

+0

無法加載擴展!謝謝! – Auston 2010-05-14 08:25:48

2

我會懷疑,這個問題各地的權限轉。當你從命令行運行php時,它以用戶調用它的方式運行。當作爲apache模塊運行時,它作爲「nobody」運行。

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

1

我癱瘓在這篇文章,並有一個擴展在我的php -i完全相同的問題,但不是在phpinfo()。 Mine是一個權限問題,因爲selinuxCentOS機器上。我不得不改變所有權和權限,現在它按預期工作。

-2

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

+0

這似乎沒有回答原來的問題。 – chrisis 2017-08-10 11:48:30