Làm thế nào để tôi làm cho apache chạy một cgi thay vì hiển thị văn bản?


12

Tôi đang cố gắng cài đặt bugzilla 4 trên Ubuntu 11.04

Tôi đã thêm phần sau vào httpd.conf của mình

<Directory “/var/www/dev.spincentre/bugzilla”>
   AddHandler cgi-script .cgi
   Options +Indexes +ExecCGI
   DirectoryIndex index.cgi
   AllowOverride Limit
</Directory>

Nhưng khi tôi truy cập URL, apache hiển thị văn bản của index.cgi thay vì thực thi tập lệnh. Bất kỳ ý tưởng làm thế nào để sửa chữa nó?

Câu trả lời:


18

Bạn đã tải mô-đun mod_cgi? Bạn có thể xem thư mục / etc / apache2 / mods-enable / có symlink không cgi.load. Nếu không có symlink như vậy, bạn có thể tạo nó bằng cách chạy

sudo a2enmod cgi

và sau đó khởi động lại Apache:

sudo service apache2 restart

Bạn có thể chạy man a2enmodđể xem những gì a2enmodkhông.


Tôi gặp vấn đề tương tự trên Ubuntu 14.04 trong quá trình di chuyển từ các máy chủ cũ. Tôi chưa bao giờ nghĩ rằng cgi sẽ bị tắt theo mặc định mà không phải với máy chủ cũ. Điều này đã sửa nó!. Xin vui lòng giới thiệu chúng giống nhau tại stackoverflow.com/questions/15199198/ . Cảm ơn bạn!
dùng3215

Tôi có symlink nhưng cgi vẫn không chạy.
Whitecat

1

Khi cài đặt apache 2.4 tôi có một số vấn đề cần giải quyết và cũng có vấn đề tương tự với hiển thị văn bản thay vì chạy cgi. Giải pháp không giống như trên, đây là giải pháp cho apache 2.2

đầu tiên bạn sẽ tải xuống tệp 2,4 gz và giải nén. Nếu bạn cố gắng biên dịch, nó sẽ khiếu nại APR không được tìm thấy, vì nó không còn được bao gồm. Bạn cần tải xuống các tệp apr và apr-produc từ apache và giải nén chúng vào thư mục bạn đang biên dịch apache vào thư mục con có tên srclib, vì vậy đường dẫn của bạn sẽ là ./httpd/srclib/apr và ./httpd/srclib/apr -Sử dụng. bạn cũng phải xóa bất kỳ số phiên bản nào khỏi tên thư mục.

cd vào thư mục / path / httpd của bạn và biên dịch với

$ ./ thông minh - với bao gồm-apr

Cấu hình của bạn sẽ mặc định là PREFIX = / usr / local / apache2

$ làm

$ thực hiện cài đặt

$ vi PREFIX / conf / httpd.conf

Bạn sẽ cần chỉnh sửa tệp httpd.conf của mình để giúp bạn chạy

Trong trường hợp của tôi, tôi đã làm như sau:

thay đổi Nghe 80 thành Nghe 127.0.0.1:80

kích hoạt dòng: LoadModule cgid_module mô-đun / mod_cgid.so

đã thay đổi SeverName thành: ServerName 127.0.0.1:80

đã thay đổi đường dẫn trong DocumentRoot và Directory cho phù hợp với hệ thống của tôi

đã thay đổi đường dẫn trong ScriptAlias

đã kích hoạt dòng Sc Scriptock cgisock

đã thay đổi đường dẫn trong Thư mục sau ScriptAlias ​​cho phù hợp với hệ thống của tôi

đã bật dòng AddHandler cgi-script .cgi

đã lưu các thay đổi và bắt đầu apache với:

$ / usr / local / apache2 / bin / apachectl -k bắt đầu

Hy vọng điều này sẽ giúp bất cứ ai đấu tranh với điều này;)


Cảm ơn đã chia sẻ, tôi gặp khó khăn khi theo dõi, bạn có phiền tổ chức việc này tốt hơn một chút không?
dùng230910
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.