2015-03-30 10 views
6

Tôi đang tạo trình xử lý giả cho các tệp .php và .html được gọi là helloworld. Handler chứa này:AddHandler không hoạt động đối với các tệp .php - Apache 2.4

static int helloworld_handler(request_rec *r){ 
    ap_rprintf(r, "hello world!"); 
    return OK; 
} 

Tôi đã nhận được điều này trong apache2.conf:

<Directory /var/www/html> 
AddHandler helloworld .php .html 
</Directory> 

handler "helloworld" đang làm việc cho các tập tin .html, nhưng nó không phải đang làm việc cho các tập tin .php. Tôi nghĩ rằng nó chủ yếu là do trình xử lý php mặc định ghi đè trình xử lý helloworld cho các tệp .php. Làm thế nào để tôi xử lý "helloworld" cho các tệp .php?

Nếu có bất kỳ thông tin bổ sung nào, vui lòng hỏi.

+0

là tương tự như này: http://serverfault.com/questions/593064/php-files-not-working-with-addhandler-apache-2-4 – Twisty

+0

Có nó cũng tương tự. Nhưng không có câu trả lời đúng ở đó. – vaibhav

Trả lời

-3

Bạn cần khởi động lại máy chủ Apache của mình sau khi thêm trình xử lý.

Kiểm tra xem tiện ích có thực sự được máy chủ giải thích theo cách bạn muốn máy chủ hoạt động hay không. Bạn có thể kiểm tra loại thông tin đó từ quản trị viên hệ thống của nhà cung cấp dịch vụ lưu trữ của bạn. Nhiều sysadmins vô hiệu hóa một số tính năng để cải thiện bảo mật.

+0

Tôi đã khởi động lại máy chủ, nó không hoạt động. – vaibhav

4

Bạn có thể muốn thử SetHandler thay

<FilesMatch \.php$> 
    SetHandler helloworld 
</FilesMatch> 
+0

Việc này sẽ ghi đè trình xử lý php mặc định. Nếu tôi làm "return DECLINED" thay vì "return OK" trong helloworld_handler, trình xử lý php mặc định không đánh giá tệp php. Bạn có thể vui lòng cho tôi biết cách không ghi đè trình xử lý php mặc định không? – vaibhav

+0

Tôi chưa bao giờ thử, nhưng tôi không hiểu tại sao bạn không thể thêm một trình xử lý thứ hai để gửi các tệp PHP tới 'application/x-httpd-php5', trình xử lý PHP mặc định – Machavity

+0

Tôi đã thêm phần chỉnh sửa vào câu hỏi. Bạn có thể giúp với nó? – vaibhav

0

SetHandler sẽ loại bỏ bất kỳ xử lý thiết lập trước đó. Để nhận được tùy chọn cho trình xử lý của bạn để chạy đầu tiên sau đó chạy mặc định PHP handler khi lợi nhuận xử lý của bạn suy giảm bạn cần phải thiết lập của bạn trước, sau đó thêm PHP

<FilesMatch \.html$> 
    SetHandler helloworld .html 
</FilesMatch> 
<FilesMatch \.php$> 
    SetHandler helloworld .php 
    AddHandler php5-script .php 
</FilesMatch> 

Lưu ý rằng điều này có tác dụng thanh toán bù trừ bất kỳ xử lý trước đó thiết lập đối với các tệp .html

Bạn chỉ có thể có một trình xử lý xử lý bất kỳ loại tệp nào theo yêu cầu. Nếu bạn luôn muốn trình thông dịch PHP chạy đầu tiên và sau đó trình xử lý của bạn chạy thứ hai, bạn có thể xem xét chỉ thị AddOutputFilter.

Hầu hết các giai đoạn được chấm dứt bởi mô-đun đầu tiên xử lý chúng; tuy nhiên, để ghi nhật ký, `sửa lỗi 'và kiểm tra xác thực không truy cập, tất cả trình xử lý luôn chạy (chặn một lỗi).

Apache API reference

AddOutputFilter docs

Các vấn đề liên quan