PHP 5.3.1 Simbol Tidak Terdefinisi: Kesalahan OnUpdateLong pada Apache Startup

9

Saya menjalankan Ubuntu 8.04 di server ini. Saya telah menginstal PHP 5.2 melalui manajer paket. Saya menghapusnya untuk menginstal PHP 5.3.1 dengan tangan. Saya membangun paket seperti itu

./configure --prefix=/opt/php --with-mysql --with-curl=/usr/bin --with-apxs2=/usr/bin/apxs2
make
make install

Ini menginstal PHP 5.3.1 di / opt / php /

$ php -v
PHP 5.3.1 (cli) (built: Dec  7 2009 10:51:14) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

Namun, ketika saya mencoba memulai Apache saya mendapatkan ini.

 # /etc/init.d/apache2 restart
 * Restarting web server apache2       
  apache2: Syntax error on line 185 of /etc/apache2/apache2.conf: 
  Syntax error on line 1 of /etc/apache2/mods-enabled/php5.load: 
  Cannot load /usr/lib/apache2/modules/libphp5.so into server: 
  /usr/lib/apache2/modules/libphp5.so: undefined symbol: OnUpdateLong
                                                                     [fail]

Adakah ide yang menyebabkan kesalahan ini? Semua referensi yang bisa saya lihat berkaitan dengan membangun paket php5 untuk php4 atau sejenisnya. PHP4 belum pernah diinstal pada mesin ini.

baudtack
sumber

Jawaban:

11

sebenarnya, apa yang dikatakan James Hackett kurang lebih adalah apa yang berhasil untuk saya.

Masalah saya adalah saya membuat PHP sebelum menginstal Apache (saya membuat PHP dari trunk terbaru dan menginstal Apache2 via APT).

Jadi ketika saya menemukan kesalahan bahwa apache menemukan simbol yang tidak ditentukan (modul yang tidak ditemukan adalah btw sewenang-wenang), saya melakukan hal berikut:

  1. make distclean pada sumber php
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

dan semuanya bekerja dengan baik.

Kapten jelas bersembunyi dari saya, tentu saja karena jika Anda hanya membuat ulang tanpa membuat distclean && configure, buat saja kompilasi simbol baru yang jelas tidak cukup ;-)

Tersusun
sumber
3

Saya memiliki masalah yang sama dan apa yang saya lakukan adalah menghapus direktori sumber php saya, mengekstrak ulang tarball dan kemudian kompilasi lagi dan semuanya bekerja dengan baik.

Saya sebelumnya telah menginstal php pada sistem ini tanpa apache dan kemudian saya telah mencoba menginstal ulang php dari direktori sumber yang sama dengan pengaturan konfigurasi yang berbeda.

James Hackett
sumber
1

Anda membuat php5 tetapi Anda tidak membangun kembali lem antara apache dan php5. Karena Anda menggunakan mod_php5, itu gagal (logis).

Anda mungkin dapat menjalankan skrip php berkat fastcgi (saya menganggap php 5.3.1 bawaan Anda ok), tetapi saya sarankan Anda untuk bertindak dengan cara lain.

Itu cukup jahat untuk membangun perangkat lunak dengan tangan di server produksi. Selain itu PHP5 adalah perangkat lunak yang besar, Anda benar-benar tidak boleh melakukan itu untuk tujuan pemeliharaan dan keamanan.

Cara yang benar untuk mencapai ini, jika Anda benar-benar membutuhkan versi itu, adalah untuk membuat backport paket. (ya, kemasan!)

Ini membutuhkan sedikit pengetahuan dan waktu pengemasan. Anda bisa mendapatkan sumber kemasan dengan apt-get source php5:, asalkan Anda memiliki sumber deb-src di /etc/apt/sources.list

zecrazytux
sumber
Ini bukan server produksi. Ini hanya server dev kami dan saya mencoba mencari tahu apa, jika ada php 5.3 akan merusak sistem kami.
baudtack
1
"Itu cukup jahat untuk membangun perangkat lunak dengan tangan di server produksi. Apalagi PHP5 adalah perangkat lunak yang besar, Anda benar-benar tidak boleh melakukan itu untuk tujuan pemeliharaan dan keamanan." Pada kebanyakan distribusi, ini adalah satu-satunya cara untuk tetap mendapatkan informasi terbaru. Ubuntu misalnya, hanya memiliki 5.2.10 sebagai stabil dalam repositori yang dirilis kembali pada bulan Juni 2009. Secara pribadi saya merasa lebih banyak risiko keamanan untuk menggunakan pra-paket karena mereka memiliki banyak hal tambahan yang dibangun di dalam bahwa Anda mungkin tidak perlu dan dapat menghapus jika Anda membangunnya sendiri. Plus, Anda dapat tetap mendapatkan informasi terbaru.
Andy Shellam
1

bagi Anda yang mengalami kesalahan zend_parse_paramater dari apache2, saat memuat libphp5.so:

/apache2.conf: Kesalahan sintaks pada baris 1 dari /etc/apache2/mods-enabled/php5.load: Tidak dapat memuat /usr/lib/apache2/modules/libphp5.so ke server: / usr / lib / apache2 / modules / libphp5.so: simbol tidak terdefinisi: zend_parse_parameters

lihat output ./configure. jika Anda mendapatkan pesan yang mengatakan sesuatu yang mirip dengan:

configure: warning: versi bison yang didukung untuk regenerasi parser Zend / PHP: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (ditemukan: tidak ada).

coba instal bison: sudo apt-get install bison

kemudian buat distclean lalu ./configure ... lalu buat lalu make -i install

http://www.linuxforums.org/forum/redhat-fedora-linux-help/87975-configuring-php-work-apache.html


sumber
Seharusnya hanya diperlukan untuk membangun kembali parser zend jika Anda telah memodifikasi kode sumber PHP dengan beberapa cara. Saya tidak pernah menginstal bison di server produksi apa pun dan tidak pernah punya masalah.
Andy Shellam
0

Seperti yang ditunjukkan oleh @zecrazytux, apakah Anda menginstal paket apache-dev yang sesuai? PHP bisa saja dibangun tanpa mereka, meskipun Anda mengatakan di mana mereka berada. Anda perlu melihat ./configure output.

ahli statika
sumber