2010-05-14 69 views
6

Tôi nhận được cả hai module được liệt kê như cài đặt/cấu hình khi tôi sử dụng:Mở rộng PHP (memcache | memcached) không hiển thị trong phpinfo() nhưng hiển thị trong php -m và php -i?

php -m 

hoặc nếu tôi sử dụng:

php -i 

nhưng khi tôi sử dụng:

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

tôi nhận được lỗi sau:

Fatal error: Class 'Memcached' not found 

Tôi đang chạy trên máy Mac - OS X (10.5.7) với cài đặt mặc định apache & php. Ngoài ra, tôi đã memcached chạy như một daemon trên 127.0.0.1:11211 và libmemcache theo yêu cầu của thư viện php-memcached. Tôi đã khởi động lại apache tấn lần và thậm chí thực hiện khởi động lại máy.

Có ai biết tại sao các mô-đun/tiện ích hiển thị trong dòng lệnh nhưng không hiển thị trong phpinfo() của tôi không? Tôi thực sự bối rối, sau 3 giờ googling, tôi chỉ là về sẵn sàng từ bỏ.

Ngoài ra, xin lưu ý, phpinfo của tôi() kết quả đầu ra tập tin ini của tôi như sau VÀ họ đều chính xác cùng một tập tin:

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

UPDATE:

Apache đang thất bại trong việc tải các phần mở rộng .

[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

Có ai biết tại sao hay điều này sẽ xảy ra? Cả hai tệp được tham chiếu trên DEFINITELY đều có. Tôi có nên chuyển câu hỏi này sang lỗi máy chủ không?

Trả lời

3

vì cả hai phiên bản sử dụng khác nhau php.ini
nơi php.ini của bạn vào vị trí đã nêu trong phpinfo() outout

+0

Đây là sản lượng phpinfo của tôi: Cấu hình File (php.ini) Đường dẫn: \t/etc Loaded Configuration File: \t /private/etc/php.ini cả đều giống nhau. – Auston

4

webserver của bạn có lẽ là sử dụng mod_php, đó là một chút riêng biệt của mã từ độc lập (CLI) thông dịch viên. Nếu cả hai đều sử dụng cùng một tệp ini và phần mở rộng memcache được cấu hình trong tệp ini, thì có vẻ như vì lý do nào đó, mod_php không tải được tiện ích mở rộng - hãy kiểm tra lỗi máy chủ web của bạn để biết lỗi khởi động.

Có thể mod_php đã được biên soạn mà không cần hỗ trợ memcache (hầu hết các phần mở rộng cần phải có tệp sơ khai được liên kết với mã php, mặc dù phần lớn mã không được liên kết cho đến khi chạy). Hoặc nó có thể là một vấn đề quyền truy cập vào tệp đối tượng được chia sẻ. Hoặc máy chủ web của bạn có thể chạy chroot và không thể tìm thấy phần mở rộng (điều này cũng có nghĩa là mặc dù các tệp ini có cùng đường dẫn, nhưng điều này liên quan đến các gốc khác nhau).

HTH

C.

+0

(hoặc có thể bạn chưa khởi động lại máy chủ web của mình kể từ khi thay đổi cấu hình?) – symcbean

+0

Không tải được tiện ích mở rộng! Cảm ơn! – Auston

2

tôi sẽ nghi ngờ rằng vấn đề xoay quanh quyền. Khi bạn chạy php từ dòng comand, nó chạy khi người dùng gọi nó. Khi chạy như một mô-đun apache, nó chạy như "không ai".

Tôi cho rằng tệp memcached.so hoặc thư mục trong đó không có quyền phù hợp.

1

Tôi đã bỏ qua bài đăng này và gặp sự cố tương tự với tiện ích mở rộng trong số php -i của mình nhưng không có trong số phpinfo(). Lỗi của tôi là vấn đề về quyền do selinux trên máy tính CentOS. Tôi đã phải thay đổi quyền sở hữu và quyền và bây giờ nó đang làm việc như mong đợi.

-2

Đặt đường dẫn php trong biến môi trường như được đưa ra bên dưới. Nhấp chuột phải vào "My Computer" Properties Tab nâng cao> Biến môi trường Trong Biến hệ thống, cuộn xuống để tìm "Đường dẫn", chọn và nhấp vào Chỉnh sửa. Thêm đường dẫn đến cài đặt php của bạn ở cuối (đảm bảo đặt trước dấu chấm phẩy ";"). Ví dụ: "; C: \ php7" Nhấp vào Ok.

+0

Điều này dường như không trả lời được câu hỏi gốc. – chrisis

Các vấn đề liên quan