2012-05-17 47 views
5

Đã có một vài chủ đề tương tự như tôi, nhưng chúng không giúp tôi. Có lẽ một cái gì đó mới sẽ xuất hiện.Thực hiện wkhtmltopdf từ PHP không thành công

Sự cố: Tôi không thể thực thi biểu mẫu wkhtmltopdf PHP. mã cơ bản của tôi là: exec('wkhtmltopdf http://somesite.com /home/user/file.pdf');

Bây giờ một vài điều tôi đã kiểm tra:

  • thức hoạt động của lệnh tương tự khi thực hiện từ giao diện điều khiển
  • safe_mode bị vô hiệu hóa - Tôi có thể thực hiện các lệnh trong PHP, ví dụ exec('ls'); hoạt động tốt
  • đường dẫn đến wkhtmltopdf có thể được tìm thấy và tôi có thể tự chạy chương trình, ví dụ exec('wkhtmltopdf -V'); hoạt động tốt và xuất ra thông tin phiên bản
  • đường dẫn đầu ra có thể ghi, nó có 777 quyền và exec('wkhtmltopdf -V > /home/user/file.pdf'); hoạt động tốt, tạo tệp và đặt thông tin phiên bản bên trong
  • thực hiện từ PHP có quyền truy cập internet, ví dụ exec('wget -O /home/user/file.pdf http://somesite.com') hoạt động tốt, truy xuất nguồn trang web và đưa nó vào tệp
  • thay thế exec với passthru, shell_exec, vv làm cho không có sự khác biệt

Kết luận: tôi có thể thực hiện wkhtmltopdf, tôi có thể truy cập internet, tôi có thể viết các tập tin cụ thể, nhưng một lệnh chuyển đổi chính xác không và trả về tình trạng 1 .

Tôi sử dụng phiên bản Ubuntu mới nhất, Phiên bản PHP là 5.3.10-1ubuntu3, phiên bản wkhtmltopdf là 0.9.9. Tôi đã thử nó trên một số máy khác với cùng một lỗi.

Bất kỳ ý tưởng nào (chỉ là BẤT K)) sẽ được đánh giá cao!

+0

Sự cố được giải quyết. Đó là một vấn đề phổ biến xảy ra khi bạn cài đặt wkhtmltopdf qua apt-get. Tôi phải xóa nó và tải xuống trực tiếp từ code.google.com/p/wkhtmltopdf. Bây giờ nó hoạt động. – Krzychu

Trả lời

13

Thêm 2>&1 vào cuối lệnh của bạn để hiểu lỗi chính xác.

exec('wkhtmltopdf http://somesite.com /home/user/file.pdf 2>&1');

Bằng cách này nó sẽ cho bạn biết lỗi khi chạy này dưới Apache. Một khi bạn biết điều gì là sai, nó dễ dàng hơn để giải quyết. Tôi đã có similar problem before with ImageMagick

+1

Người đàn ông, bạn đã cứu mạng tôi! Ý tưởng của bạn đã hoạt động và cho tôi thấy lỗi "không thể kết nối với máy chủ X". Sau đó, thật dễ dàng để thấy rằng đó là một vấn đề phổ biến khi bạn cài đặt wkhtmltopdf qua apt-get. Tôi đã phải xóa nó và tải xuống trực tiếp từ http://code.google.com/p/wkhtmltopdf/. Bây giờ nó hoạt động :) Cảm ơn rất nhiều! – Krzychu

0

Tôi đang sử dụng lớp wkhtmltopdf và tôi thấy nó sử dụng proc_open qua exec. Bạn đã thử chưa?

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