pecl install mongo - terus mengompilasi dengan API modul yang salah

9

Bekerja dengan Ubuntu 12,04 di sini, nginx dan php5-fpm

Saya punya mongo yang bekerja dengan baik di php 5.3, kemudian saya menambahkan ondrej / php5 ppa dan diperbarui ke php5.4. Itu membuat ekstensi GD dan CURL, tetapi tidak mongo. Saya menambahkan kembali baris ke file php.ini, dan tidak ada. Lalu saya mengaktifkan kesalahan startup dan mendapatkan ini:

PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525/mongo.so' - /usr/lib/php5/20100525/mongo.so: cannot open shared object file: No such file or directory

Jadi, tebakan liar, saya lakukan find -name 'mongo.so'dan memindahkan file dari 20090626 / ke 20100525 / ... yang menghasilkan kesalahan ini:

PHP Startup: mongo: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match

Saya kemudian melakukannya pecl uninstall mongodan pecl install mongo- yang membuat file mongo.so baru kembali pada 20090626 /

Saya agak baru dalam hal ini, semoga ini adalah kesalahan mudah yang bisa diperbaiki! Saya hanya perlu membuat mongo kembali dan berjalan.

kavisiegel
sumber

Jawaban:

12

Dugaan saya adalah:

  • pecl install mongosebenarnya menginstal biner pra-dibangun (yang akan benar-benar bodoh, tetapi tidak akan hampir mengejutkan); atau
  • Anda masih mendapatkan php5-devpaket lama dari 5,3 instalasi Anda duduk-duduk, dan peclmenemukan dan menggunakan itu bukan versi 5.4. Lihatlah daftar paket terkait PHP Anda ( dpkg -l '*php*') dan lihat apakah ada 5,3 paket yang tersisa, dan tingkatkan mereka.
womble
sumber
Saya hanya menjawab pertanyaan saya sendiri dengan ini! Terima kasih!
kavisiegel
Jadi yang mana itu?
womble
2
Saya harus memperbarui php5-dev, uninstall mongo lalu instal ulang.
kavisiegel
yang bekerja dengan baik untuk saya
Oliver Bayes-Shelton
2

Pikiran besar berpikir sama, womble diposting beberapa saat setelah saya tahu apa yang terjadi. Jawabannya benar dan sebelum saya jadi itu yang akan saya terima sebagai jawabannya, tetapi untuk referensi di masa depan, solusinya adalah ini:

apt-get update
apt-get install php5-dev
pecl uninstall mongo
pecl install mongo
/etc/init.d/php5-fpm restart

Dan tentu saja, mongo.so sudah ada di php.ini sehingga pecl tidak menghapusnya, sehingga membuatnya sedikit lebih mudah untuk ditingkatkan.

kavisiegel
sumber