2009-07-23 61 views
15

Tôi đã cài đặt Memcache và làm việc cho các ứng dụng PHP chạy qua Apache (v2.2) nhưng khi tôi cố gắng chạy tệp .php trong dòng lệnh, tôi nhận được lỗi này:'Memcache' không tìm thấy trong dòng lệnh PHP script

Fatal error: Class 'Memcache' not found in /usr/local/Matters/app/matters-common/connection.php on line 94 

Dòng 94 là:

$memcache = new Memcache; 

thông tin khác:

CentOS 5.2
PH P 5.2.5 (cli) (được xây dựng: 20 Tháng 2 2008 21:13:12)
Zend Engine v2.2.0, Bản quyền (c) 1998-2007 Zend Technologies
Apache v2.2.8

Trả lời

25

Có lẽ bạn có các tệp php.ini riêng được thiết lập cho apache và dòng lệnh (cli).

Nếu vậy, bạn cần phải thêm dòng sau vào tập tin php.ini cli của bạn:

extension=memcache.so 

Trên Ubuntu nó trong /etc/php5/cli/php.ini

Nếu nó hoạt động thì memcache sẽ xuất hiện trong danh sách các mô-đun nếu bạn chạy php -m trên dòng lệnh.

Hoặc, bạn có thể tạo một tệp /etc/php5/cond.d/memcache.ini với cùng nội dung.

+0

Ran php-m và nó không hiển thị – rjstelling

+0

Có phải bất kỳ các module khác làm việc cho cli? Là "extension_dir" đặt trong tập tin php.ini cli? Nếu memcache.so nằm trong thư mục mặc định ( /usr/lib/php5/20060613/đối với tôi) thì bạn có thể để extension_dir nhận xét. –

5

Có thể là bạn có một tập tin php.ini riêng biệt cho chế độ CLI. Tệp này có thể không bao gồm phần mở rộng memcache.

0

Để đơn giản vì tôi đã sử dụng:

php -c /etc/php.ini ./cli-script.php 
+0

Trong môi trường dev, tôi có xu hướng thay thế php.ini cli bằng symlink thành apache vì vậy tôi chỉ có một tệp (mặc định sự khác biệt duy nhất trên Ubuntu là giới hạn bộ nhớ được đặt thành không giới hạn trên dòng lệnh). –

2

tôi đã có loại lỗi và tôi cũng đã làm php -i | grep memcache và nó cho biết memcache được kích hoạt, nhưng giải pháp của tôi giải quyết vấn đề là khi tôi chỉnh sửa php.ini, tôi chỉ cần sửa đổi extension_dir = "./" dòng thành đường dẫn đầy đủ của thư mục tiện ích mở rộng hiện tại, extension_dir = "/ usr/local/lib" - bạn cần phải kiểm tra xem thư mục mở rộng của php nằm ở đâu và đảm bảo memcache.so ở đó ..

sau đó tôi chỉ cần khởi động lại httpd và vấn đề đã biến mất.

bạn có thể kiểm tra các bước chi tiết ở đây:

http://joemarie-aliling.com/223/php-programming/php-memcache-not-found-problem/

0

Nếu bạn không biết mà php.ini dòng lệnh của bạn đang sử dụng, loại php -i. Bạn sẽ nhận được một danh sách dài các thiết lập này, nơi nơi nào đó gần phía trên cùng của danh sách, bạn sẽ thấy đó php.ini đang được sử dụng:

Configuration File (php.ini) Path => /Applications/MAMP/bin/php/php5.3.6/conf 
Loaded Configuration File => /Applications/MAMP/bin/php/php5.3.6/conf/php.ini 
Scan this dir for additional .ini files => (none) 
Additional .ini files parsed => (none)