PHP 5.3.1 Tanımsız Sembol: Apache Başlangıcında OnUpdateLong hatası


9

Bu sunucuda Ubuntu 8.04 çalıştırıyorum. Paket yöneticisi aracılığıyla PHP 5.2 yüklü. PHP 5.3.1'i elle yüklemek için kaldırdım. Paketleri böyle inşa ettim

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

Bu, / opt / php / dizinine PHP 5.3.1 sürümünü yükledi

$ 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

Ancak, Apache'yi başlatmaya çalıştığımda bunu alıyorum.

 # /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]

Bu hataya neden olan herhangi bir fikir var mı? Görebildiğim tüm referanslar php4 veya benzeri için php5 paketleri oluşturmakla ilgili. PHP4 bu makineye hiç yüklenmedi.

Yanıtlar:


11

aslında, James Hackett'in söylediği az çok benim için işe yarayan şeydi.

Benim sorunum, Apache'yi yüklemeden önce PHP'yi inşa etmem (PHP'yi en son bagajdan inşa ettim ve APache aracılığıyla Apache2'yi kurdum).

Bu yüzden apache tanımsız bir sembolle karşılaştığım hatayla karşılaştığımda (bulunamadı modülü keyfi btw.), Aşağıdakileri yaptım:

  1. make distclean php kaynağında
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

ve her şey yolunda gitti.

Tabii ki kaptan benden saklanıyordu, çünkü eğer sadece ilgisiz ve yapılandırmadan yeniden yaparsanız, sadece yeterli olmayan yeni sembolleri derler;


3

Ben de aynı sorunu vardı ve ne yaptı benim php kaynak dizini silmek, tarball yeniden ayıklamak ve sonra tekrar derlemek ve her şey iyi çalıştı.

Daha önce apache olmadan bu sisteme php yükledim ve sonra farklı yapılandırma ayarları ile aynı kaynak dizinden php yeniden yüklemeyi denemişti.


1

Php5 oluşturdunuz ama apache ve php5 arasındaki yapıştırıcıyı yeniden inşa etmediniz. Mod_php5 kullandığınız için başarısız olur (mantıksal).

Fastcgi sayesinde php komut dosyasını çalıştırabilirsiniz (yerleşik php 5.3.1'in iyi olduğunu varsayıyorum), ancak yine de başka bir şekilde hareket etmenizi öneririm.

Bir üretim sunucusunda el ile bir yazılım oluşturmak oldukça kötü. Üstelik PHP5 yazılımın büyük bir parçasıdır, gerçekten gerektiği değil bakım ve güvenlik amaçlı böyle yapar.

Bunu başarmanın doğru yolu, gerçekten bu sürüme ihtiyacınız varsa, paketi backport etmektir. (evet, paketleme!)

Biraz paketleme bilgisi ve zamanı gerektirir. /Etc/apt/sources.list adresinde apt-get source php5bir deb-src kaynağınız olması koşuluyla , ambalaj kaynaklarını şu adresten alabilirsiniz:


Bu bir üretim sunucusu değil. Sadece dev sunucumuz ve php 5.3 sistemimizde bir şey kırılırsa ne olduğunu anlamaya çalışıyorum.
baudtack

1
"Bir üretim sunucusunda el ile bir yazılım oluşturmak oldukça kötü. Ayrıca PHP5 büyük bir yazılım parçası, bunu gerçekten bakım ve güvenlik amacıyla yapmamalısınız." Çoğu dağıtımda güncel kalmanın tek yolu budur. Örneğin, Ubuntu, Haziran 2009'da piyasaya sürülen depolarında yalnızca 5.2.10 kadar kararlı. İhtiyacınız ve bunları kendiniz inşa ederseniz çıkarabilirsiniz. Ayrıca güncel kalabilirsiniz.
Andy Shellam

1

libphp5.so yüklerken apache2'den zend_parse_paramater hatasını yaşayanlar için:

/apache2.conf: /etc/apache2/mods-enabled/php5.load satırının 1. satırındaki sözdizimi hatası: /usr/lib/apache2/modules/libphp5.so, sunucuya yüklenemiyor: / usr / lib / apache2 / modules / libphp5.so: tanımsız sembol: zend_parse_parameters

./configure çıktısına bir göz atın. Şuna benzer bir şey söyleyen bir mesaj alırsanız:

configure: uyarı: Zend / PHP ayrıştırıcılarının yenilenmesi için desteklenen bizon sürümleri: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (bulunan: yok).

bizon yüklemeyi deneyin: sudo apt-get bizon yükleyin

sonra distclean sonra ./configure ... sonra make -i install yap

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


Zend ayrıştırıcılarını yalnızca PHP kaynak kodunu bir şekilde değiştirdiyseniz yeniden oluşturmanız gerekir. Herhangi bir üretim sunucusuna bizon yüklemedim ve hiç problem yaşamadım.
Andy Shellam

0

@Zecrazytux'un belirttiği gibi, uygun apache-dev paketlerini kurdunuz mu? Nerede olduklarını söylemiş olsanız bile, PHP onlarsız da inşa edilmiş olabilir. ./Configure çıktısına bakmanız gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.