2013-10-03 20 views
7

Tôi dường như không thể lấy mô-đun python cgitb để xuất dấu vết ngăn xếp trong trình duyệt. Tôi không có vấn đề gì trong môi trường shell. Tôi đang chạy Centos 6 với python 2.6.python cgitb không hoạt động thông qua trình duyệt

Dưới đây là một ví dụ mã đơn giản mà tôi đang sử dụng:

import cgitb; cgitb.enable() 

print "Content-type: text/html" 
print 

print 1/0 

tôi nhận được một Lỗi máy chủ nội bộ thay vì báo cáo chi tiết được in ra. Tôi đã thử các loại lỗi khác nhau, các trình duyệt khác nhau, v.v.

Khi tôi không có lỗi, tất nhiên python hoạt động tốt. Nó sẽ in lỗi trong một vỏ tốt. Điểm của cgitb là in lỗi thay vì trả về "Lỗi Máy chủ Nội bộ" trong trình duyệt vì hầu hết các lỗi ngoại lệ. Về cơ bản tôi chỉ đang cố gắng để có được cgitb để làm việc trong môi trường trình duyệt.

Bất kỳ đề xuất nào?

Trả lời

-1

Tôi chỉ sẽ báo docs:

Hãy chắc chắn rằng kịch bản của bạn là có thể đọc được và thực thi bởi "những người khác"; chế độ tệp Unix phải là 0755 bát phân (sử dụng chmod 0755 filename).

Hãy chắc chắn rằng dòng đầu tiên của kịch bản chứa #! bắt đầu từ cột 1 theo sau là tên đường dẫn của trình thông dịch Python, ví dụ:

#!/usr/local/bin/python

+0

OP cho biết, không có lỗi, tập lệnh chạy tốt. do đó, nó chắc chắn không phải là một vấn đề với việc thực hiện CGI. Xin vui lòng bình luận về câu trả lời của bạn trong trường hợp tôi đã nhận nó sai vì tôi, quá, cần phải có được điều này chạy và cgitb chỉ dường như bắt và hành động về vấn đề của tôi. – Chris

+0

Hãy để tôi không đồng ý với bạn. Trong trình bao, bạn có thể chạy tệp bằng cách chuyển 'python' trước tên tệp. Trong CGI bạn phải chắc chắn rằng tập tin chính nó là thực thi như động cơ CGI có thể không biết làm thế nào để chạy nó. Bạn phải đặt giá trị shebang vào đầu tệp. – baldr

+0

Đồng ý. Tuy nhiên tôi thấy rằng câu trả lời làm cho tôi nghĩ rằng đây là giải pháp đúng và duy nhất cho vấn đề. Đặc biệt là "chỉ". Tôi nghĩ rằng nó nên nói "Hãy chắc chắn rằng bạn có những điều cơ bản CGI được bảo hiểm". Tôi nhận ra rằng tôi cho rằng thực sự có * các giải pháp khác nhau cho vấn đề này trong kịch bản của OP. – Chris

0

Được rồi, tôi đã vấn đề của tôi cố định và OP đã đưa tôi đến nó: Ngay cả tho cgitb sẽ xuất HTML theo mặc định, nó sẽ không xuất ra một tiêu đề! Và Apache không thích điều đó và có thể cung cấp cho bạn một số lỗi ngớ ngẩn như:

<...blablabla>: Response header name '<!--' contains invalid characters, aborting request

Nó chỉ ra, rằng Apache vẫn làm việc theo cách của mình thông qua các tiêu đề khi nó đã gặp phải một số HTML. Nhìn vào những gì OP in trước khi lỗi được kích hoạt. Đó là một tiêu đề và bạn cần điều đó. Bao gồm cả dòng trống.

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