PHP không hoạt động trong Apache2 sau khi nâng cấp hệ thống


14

Gần đây đã nâng cấp hệ thống của tôi từ Karmic lên Lucid. Điều này liên quan đến Apache và PHP đang được cập nhật.

Bây giờ máy chủ của tôi không thể xử lý các tệp PHP, mọi điều hướng đến chúng đều kích hoạt tải xuống thay vì phân tích cú pháp.

Mô-đun PHP vẫn được tải trong chế độ Apache kích hoạt và tôi có AddType application/x-httpd-php .phptrong httpd.conf của mình.

Không có thông báo có ý nghĩa trong truy cập Apache hoặc nhật ký lỗi vì vậy tôi bị bối rối.

Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn.

Câu trả lời:


17

/var/log/apache2/error.log sẽ hiển thị một dòng như dưới đây nếu PHP được tải thành công:

[Thứ ba ngày 30 tháng 8 12:53:36 2011] [thông báo] Apache / 2.2.14 (Ubuntu) PHP / 5.3.2-1ubfox4.9 với Suhosin-Patch được định cấu hình - tiếp tục các hoạt động bình thường

Hãy chú ý đến ngày, nếu đó là thứ gì đó từ năm 2009, bạn đã định cấu hình sai thứ gì đó.

AddType là vô dụng, bạn cần sử dụng:

<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

Xem thêm hướng dẫn cài đặt trên php.net cho Apache 2.x .

Bạn không cần phải thêm thủ công, gói libapache2-mod-php5cài đặt/etc/apache2/mods-available/php5.conf có chứa:

<IfModule mod_php5.c>
    <FilesMatch "\.ph(p3?|tml)$">
        SetHandler application/x-httpd-php
    </FilesMatch>
    <FilesMatch "\.phps$">
        SetHandler application/x-httpd-php-source
    </FilesMatch>
    # To re-enable php in user directories comment the following lines
    # (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
    # prevents .htaccess files from disabling it.
    <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

Vì nó là một conffile, có thể nó không được cài đặt với bản nâng cấp. Để khắc phục sự thanh trừng đó nó và sau đó cài đặt nó một lần nữa:

sudo apt-get purge libapache2-mod-php5
sudo apt-get install libapache2-mod-php5

Để kích hoạt PHP, bạn phải chạy:

sudo a2enmod php5

Khởi động lại máy chủ web sau:

sudo /etc/init.d/apache2 restart

Những việc khác cần làm:

  • kiểm tra các cài đặt xung đột trong /etc/apache2 .
  • Bạn đã xây dựng Apache từ nguồn chưa?
  • Chạy sudo apache2ctl configtest để kiểm tra lỗi cấu hình của bạn
  • Mở http: // localhost / server-information để kiểm tra cấu hình và mô-đun đã tải. Các statusmô-đun phải được tải cho điều đó. Nếu bạn đang chạy một máy chủ từ xa, bạn cần thêm chính mình vào Allow fromdanh sách /etc/apache2/mods-enabled/status.confvà khởi động lại máy chủ sau đó

Xuất sắc. AFK ngay bây giờ, nhưng sẽ kiểm tra điều này tối nay. Cảm ơn.
Jivings

Bị xóa và cài đặt lại, mô-đun được tải trong chế độ kích hoạt mod, nhưng tôi vẫn gặp vấn đề tương tự ... Tôi không thể tìm thấy bất cứ điều gì có thể bị xung đột và bao gồm cho các tệp conf chắc chắn có trong apache.conf. Bạn có bất cứ ý tưởng khác? Cảm ơn.
Jivings

@Jivings: một số ý tưởng gỡ lỗi được thêm vào
Lekensteyn

Vẫn không thể tìm ra nó. Tuy nhiên tôi đã phát hiện ra một điều thậm chí còn tò mò hơn. Có vẻ như PHP đang hoạt động tốt đối với một trong các Máy chủ ảo được thiết lập, mặc dù tất cả những gì nó làm là xác định tài liệuRoot tại / var / www. Sao có thể như thế được?!
Jivings

1
Bạn vẫn sẽ cần xóa bộ nhớ cache của trình duyệt và khởi động lại apache.
Francesco

3

Chà, sau khi không có gì khác hoạt động và Apache đã trở nên rất khó hiểu, cuối cùng tôi cũng đã thanh trừng tất cả các gói Apache và cài đặt lại chúng.

Có vẻ như bây giờ đang hoạt động tốt, ai biết được cái gì đã xảy ra với nó ....

BIÊN TẬP

Tôi đã phát hiện ra những gì sai khi tôi thiết lập lại cài đặt cấu hình Apache của mình. [Mục blog này] [1] giải thích nó.

Hóa ra, mặc dù mô-đun userdir không được sử dụng tích cực, phần còn lại của các trang web nằm trong thư mục ~ / public_html của tôi và php đã bị vô hiệu hóa cho mọi thứ trong đó.

Tôi đoán đây phải là một bổ sung gần đây cho mô-đun php không có trong cài đặt Karmic của tôi.


1
Điều đó nên liên quan đến một vấn đề cấu hình. Khi nâng cấp, không có tệp /etcnào được sao chép afaik (ít nhất, ai đó đã gặp sự cố khi /etc/init.d/apache2không được tạo khi cài đặt lại, chỉ khi cài đặt + thanh lọc)
Lekensteyn

Kỳ lạ là nó đã hoạt động trước khi nâng cấp hệ thống của tôi rồi ...
Jivings

có khả năng thay đổi tính năng sau đó. Bạn không thể mong đợi mọi nâng cấp để tôn trọng các cài đặt cấu hình cũ. Một số sửa đổi sẽ có ý nghĩa đối với đa số nhưng không phải đối với một số khác.
Lekensteyn

Thật. Cảm ơn vì đã giúp tôi đi đến tận cùng của nó, dù sao cũng được đánh giá cao :)
Jivings

1

các php5.conftập tin trong /etc/apache2/mods-enabledcó một vài dòng ở phía dưới mà giữ php từ thực hiện bên trong một thư mục người dùng, vì vậy tùy thuộc vào cấu hình của bạn, điều này có thể là vấn đề của bạn cũng. Bạn chỉ có thể nhận xét những dòng này và tải lại apache2

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.