Tidak dapat memuat ekstensi memcache.so

9

Saya membuat PHP dari sumber dengan perintah configure

'./configure' '--prefix=/usr/local/php-5.2.8' '--with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d' '--with-apxs2=/usr/local/httpd/bin/apxs' '--with-mysql=/usr/local/mysql/' '--with-zlib' 

Saya memasang ekstensi memcache php:

wget http://pecl.php.net/get/memcache
tar -zxvf memcache-2.2.5.tgz
cd memcache-2.2.5
phpize
./configure --enable-memcache
make
make install

Saya menambah /usr/local/lib/php.in saya

extension=memcache.so

Reboot apache saya dan menjalankan php-m tetapi php sepertinya tidak memuat ekstensi memcache Saya mengikuti solusi ini dari situs ini http://www.howtoforge.com/forums/showthread.php?t=26554

Saya menambahkan path lengkap

extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so 

apache yang telah direstart Tapi itu tidak memuat ekstensi memcache! Saya google sekitar tetapi masalah yang sama! Bagaimana saya bisa memuat ekstensi ini _ _ "

billyduc
sumber

Jawaban:

1

Pertama jalankan binary php Anda seperti

php -v

Seharusnya mengeluh bahwa php.ini Anda ingin memuat modul yang tidak dapat dimuat ...

Jika tidak mengeluh, jalankan

php --ini

Ini akan memberi Anda lokasi php.ini Anda (cukup sembunyikan yang salah: D)

Apakah ini membantu?

Arenstar
sumber
1

Masalahnya adalah ..., pada titik ini: wget http://pecl.php.net/get/memcache Alih-alih tar -zxvf memcache-2.2.5.tgz, Anda harus melakukannya tar -zxvf memcache(ini adalah nama file dari wget).

Setelah Anda mengekstrak file, Anda akan mendapatkan versi memcache terbaru, pada saat saya melakukan ini, saya mendapatkan folder memcache-3.0.8 .

Jadi, langkah selanjutnya adalah:

cd memcache-3.0.8 
phpize 
./configure --enable-memcache 
make
make install

Dan akhirnya, jangan lupa untuk menambahkan baris ini ke php.ini Anda:

extension = memcache.so

Dan restart Apache.

Dylan B
sumber
0

Apakah Anda yakin memcached dipasang di lokasi yang benar? Apa yang Anda dapatkan jika Anda menjalankan:locate memcache.so

Apakah memcached terinstal (biner)? Apakah itu memerlukan perpustakaan tambahan (libmemcache)?

Tom O'Connor
sumber
Anda harus menggunakan find, bukan loc, mengingat bahwa itu mungkin belum ada di loc db.
Cian
Daemon memcached berhasil diinstal! dan ketika saya menemukan ekstensi memcache, cari memcache.so /usr/local/lib/php/extensions/no-debug-non-zts-20060613/memcache.so /usr/local/src/memcache-2.2.5/.libs /memcache.so /usr/local/src/memcache-2.2.5/modules/memcache.so Saya pikir masalahnya adalah php tidak memuat ekstensi!
billyduc
0

Tambahkan extension_dirarahan untuk memberi tahu PHP dari mana memuat ekstensi dan hapus jalur dari extensionarahan.

extension = memcache.so
extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20060613
Dan Carley
sumber
Kasihan aku! Itu tidak bekerja!
billyduc
0

Satu hal yang membantu saya adalah menggunakannya

pecl uninstall memcache
pecl install memcache

Hal lain (ini hanya berlaku untuk versi php yang agak lama): http://www.hollub.at/phpmanual/ref.memcache.html mengatakan:

In order to use these functions you must compile PHP with Memcache support by using the --enable-memcache[=DIR] option. 
fuenfundachtzig
sumber
0

ini karena / var / tmp Anda terpasang dengan izin noexec

Anda dapat mencoba mengkompilasi ulang memcache menggunakan perintah fuenfundachtzig setelah menghapus sementara / var / tmp symlink dan membuat folder baru / var / tmp. (pengaturan ini mungkin berbeda dari server Anda)

#rm /var/tmp
#mkdir /var/tmp

#pecl install memcache

kemudian amankan kembali folder temp Anda

#rm -rf /var/tmp
#ln -s /tmp /var/tmp

baca lebih lanjut tentang cara mengamankan tmp di sini

dan cara menggunakan PECL dengan tmp yang dipasang dengan noexec

apis17
sumber
0

Jika PHP Anda sudah dikompilasi, cobalah untuk menghapus extension_dir dari php.ini Anda .

vfedorkov
sumber