Biểu tượng không xác định PHP 5.3.1: Lỗi OnUpdateLong khi khởi động Apache


9

Tôi đang chạy Ubuntu 8.04 trên máy chủ này. Tôi đã cài đặt PHP 5.2 thông qua trình quản lý gói. Tôi gỡ bỏ nó để cài đặt PHP 5.3.1 bằng tay. Tôi đã xây dựng các gói như vậy

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

Điều này đã cài đặt PHP 5.3.1 trong / 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

Tuy nhiên, khi tôi cố gắng khởi động Apache, tôi nhận được điều này.

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

Bất cứ ý tưởng những gì gây ra lỗi này? Tất cả các tài liệu tham khảo tôi có thể thấy phải thực hiện với việc xây dựng các gói php5 cho php4 hoặc tương tự. PHP4 chưa bao giờ được cài đặt trên máy này.

Câu trả lời:


11

Thật ra, những gì James Hackett nói ít nhiều là những gì làm việc cho tôi.

Vấn đề của tôi là tôi đã xây dựng PHP trước khi tôi cài đặt Apache (Tôi đã xây dựng PHP từ thân cây mới nhất và cài đặt Apache2 qua APT).

Vì vậy, khi tôi gặp lỗi mà apache gặp phải một ký hiệu không xác định (mô-đun không tìm thấy là btw tùy ý.), Tôi đã làm như sau:

  1. make distclean trên nguồn php
  2. ./configure --prefix=/usr/local/php-5.3-svn --with-apxs2=/usr/bin/apxs2
  3. make && make install

và mọi thứ hoạt động tốt

Dĩ nhiên, đội trưởng đã trốn tránh tôi, vì nếu bạn chỉ làm lại mà không tạo ra cấu hình &&, chỉ cần biên dịch các biểu tượng mới mà rõ ràng là không đủ ;-)


3

Tôi gặp vấn đề tương tự và những gì tôi đã làm là xóa thư mục nguồn php của mình, giải nén lại tarball và sau đó biên dịch lại và mọi thứ đều hoạt động tốt.

Trước đây tôi đã cài đặt php trên hệ thống này mà không có apache và sau đó tôi đã thử cài đặt lại php từ cùng thư mục nguồn với các cài đặt cấu hình khác nhau.


1

Bạn đã xây dựng php5 nhưng bạn đã không xây dựng lại keo giữa apache và php5. Vì bạn đang sử dụng mod_php5, nó không thành công (logic).

Bạn có thể chạy tập lệnh php nhờ fastcgi (Tôi giả sử php 5.3.1 dựng sẵn của bạn là ổn), nhưng dù sao tôi cũng khuyên bạn nên hành động theo cách khác.

Điều đó khá khó chịu khi xây dựng một phần mềm bằng tay trên một máy chủ sản xuất. Hơn nữa, PHP5 là một phần mềm lớn, bạn thực sự không nên làm điều đó cho mục đích bảo trì và bảo mật.

Cách chính xác để đạt được điều này, nếu bạn thực sự cần phiên bản đó, là backport gói. (vâng, bao bì!)

Nó đòi hỏi một chút kiến ​​thức và thời gian đóng gói. Bạn có thể lấy các nguồn đóng gói với : apt-get source php5, miễn là bạn có nguồn deb-src trong /etc/apt/source.list


Nó không phải là một máy chủ sản xuất. Đó chỉ là máy chủ dev của chúng tôi và tôi đang cố gắng tìm hiểu xem, nếu có bất cứ điều gì php 5.3 sẽ phá vỡ trong hệ thống của chúng tôi.
baudtack

1
"Thật khó chịu khi xây dựng một phần mềm bằng tay trên một máy chủ sản xuất. Hơn nữa PHP5 là một phần mềm lớn, bạn thực sự không nên làm điều đó cho mục đích bảo trì và bảo mật." Trên hầu hết các bản phân phối, đó là cách duy nhất để cập nhật. Ví dụ, Ubuntu chỉ có 5.2.10 ổn định trong kho lưu trữ được phát hành vào tháng 6 năm 2009. Cá nhân tôi thấy có nhiều rủi ro bảo mật hơn khi sử dụng các gói trước vì chúng có rất nhiều thứ bổ sung được tích hợp mà bạn không thể cần và có thể loại bỏ nếu bạn tự xây dựng chúng. Ngoài ra, bạn có thể cập nhật.
Andy Shellam

1

đối với những bạn gặp phải lỗi zend_parse_paramater từ apache2, trong khi tải libphp5.so:

/ apache libphp5.so: ký hiệu không xác định: zend_parse_parameter

hãy nhìn vào đầu ra ./mình. nếu bạn nhận được một tin nhắn có nội dung tương tự:

cấu hình: cảnh báo: các phiên bản bison được hỗ trợ để tái tạo bộ phân tích cú pháp Zend / PHP: 1.28 1.35 1.75 1.875 2.0 2.1 2.2 2.3 2.4 2.4.1 (không tìm thấy: không có).

thử cài đặt bison: sudo apt-get install bison

sau đó thực hiện distclean rồi ./mình ... sau đó thực hiện cài đặt -i

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


Chỉ cần xây dựng lại trình phân tích cú pháp zend nếu bạn đã sửa đổi mã nguồn PHP theo một cách nào đó. Tôi chưa bao giờ cài đặt bò rừng trên bất kỳ máy chủ sản xuất nào và không bao giờ gặp sự cố.
Andy Shellam

0

Như @zecrazytux đã chỉ ra, bạn đã cài đặt các gói apache-dev thích hợp chưa? PHP có thể đã được xây dựng mà không có chúng, mặc dù bạn đã nói nó ở đâu. Bạn cần nhìn vào đầu ra ./mình.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.