Mã PHP được trả về thay vì thực thi


3

Tôi có L-Ubuntu 11.04. Tôi đã cài đặt Apache2 và tôi đang cố gắng mô phỏng một máy chủ trên hệ thống tệp cục bộ của mình bằng cách điều hướng đến localhosttrong trình duyệt.

Vấn đề là dường như tôi không thể để php thực thi khi trên localhost. Mã PHP được in đơn giản trong trình duyệt (thay vì được thực thi và kết quả được in).

  • libapache2-mod-php5 được cài đặt và phiên bản mới nhất.
  • Mô-đun php5 của Apache được kích hoạt.

Làm thế nào tôi có thể có được PHP để chạy trên localhost?


1
1. Vấn đề là [...] khi trên localhost. Điều đó có nghĩa là nó hoạt động từ nơi khác? 2. [...] Tôi dường như không thể bắt php thực thi [...] Chính xác thì chuyện gì xảy ra?
Dennis

1. Vâng, nó hoạt động khi tôi có cấu trúc thư mục đó trên máy chủ. Nhưng nếu tôi sao chép trang web vào máy tính cục bộ của mình và đưa nó vào localhost ... không có php. 2. Điều đáng mừng là mã php chỉ được in trực tiếp thay vì được diễn giải.
Hermann Ingjaldsson

Hãy thử sao chép các tập tin /etc/apache2/mods-available/php5.*từ máy chủ của bạn vào máy tính ở nhà của bạn và khởi động lại apache2. Chỉ cần chắc chắn, tạo bản sao lưu đầu tiên.
Dennis

Đó là một không gian máy chủ được thuê và thật đáng buồn là tôi không có quyền truy cập vào thư mục đó.
Hermann Ingjaldsson

Câu trả lời:


4

Tệp cấu hình /etc/apache2/mods-available/php5.confkiểm soát các tệp mà Apache nhận ra là các tập lệnh php (dựa trên các phần mở rộng của chúng).

Được mặc định (trong PHP 5.3.2), tệp chứa mã sau đây:

<FilesMatch "\.ph(p3?|tml)$">
    SetHandler application/x-httpd-php
</FilesMatch>

Điều này ảnh hưởng đến các tệp có phần mở rộng sau:

  • .php
  • .php3
  • .phtml

Từ cuộc thảo luận của chúng tôi trong trò chuyện , tôi biết rằng các tệp của bạn có htmlphần mở rộng. Máy chủ được cấu hình để coi .htmlcác tệp là tệp php, nhưng máy tính ở nhà của bạn thì không. Điều đó khiến bạn có hai lựa chọn:

  1. Đổi tên các .htmltệp của bạn có chứa mã php thành một trong các tiện ích mở rộng ở trên.

  2. Thay thế dòng

    <FilesMatch "\.ph(p3?|tml)$">
    

    trong bạn php5.confbởi

    <FilesMatch "\.(ph(p3?|tml)|html?)$">
    

    và tải lại apache bằng cách thực hiện lệnh sau:

    sudo service apache2 reload
    

    Ngoài các tiện ích mở rộng được đề cập trước đó, cấu hình mới cũng ảnh hưởng đến:

    • .htm
    • .html

1

Apache có chạy không?

Khi mở localhost, bạn phải thấy "Nó hoạt động!" trang. nếu apache không chạy, bạn có thể sử dụng/etc/init.d/apache2 start

Có thể mô-đun php không được kích hoạt. Để kích hoạt

a2enmod php5

sau

/etc/init.d/apache2 reload

Bạn có thể dùng

tail -f /var/log/apache2/error.log

để xem nhật ký lỗi.


apache đang chạy và mô-đun được kích hoạt. Nhưng khi tôi chạy lệnh đuôi đó, tôi nhận được "[Thứ tư 16 tháng 5 13:24:11 2012] [lỗi] [client 127.0.0.1] Tệp không tồn tại: /var/www/favicon.ico [Thứ tư 16 tháng 5 13:24 : 30 2012] [thông báo] đã bắt SIGTERM, tắt [Thứ tư 16 tháng 5 13:25:25 2012] [thông báo] Apache / 2.2.17 (Ubuntu) PHP / 5.3.5-1ubfox7.8 với Suhosin-Patch được định cấu hình - nối lại hoạt động bình thường [Thứ tư 16 tháng 5 13:25:57 2012] [lỗi] [client 127.0.0.1] Tệp không tồn tại: /var/www/favicon.ico "
Hermann Ingjaldsson

lỗi favicon là lạ bởi vì tập tin hình ảnh chắc chắn là có.
Hermann Ingjaldsson

Bạn có kiểm tra quyền không?
kelebek

vấn đề được giải quyết nên tôi không thực sự quan tâm. nhưng cảm ơn.
Hermann Ingjaldsson

0

Bạn phải cài đặt mô-đun php.

apt-get install libapache2-mod-php5

nó đã được cài đặt và ở phiên bản mới nhất.
Hermann Ingjaldsson
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.