2009-03-16 22 views
5

Tôi đang cố gắng chạy firefox trên máy chủ không có đầu để chụp ảnh màn hình của trang web. Tôi có thể làm điều này tốt từ thiết bị đầu cuối bằng cách sử dụngSử dụng PHP và Xvfb

"DISPLAY =: 12 firefox -saveimage http://www.google.com/".

Vấn đề là khi tôi cố gắng thực hiện hệ thống ("DISPLAY =: 12 firefox -saveimage http://www.google.com"); không hoạt động. Tôi có cảm giác rằng nó không thực hiện trong môi trường vỏ bình thường. Tôi đã đi ngược lại phán quyết tốt hơn của tôi và cho người dùng apache một vỏ thực tế. Nếu tôi su apache và thực hiện lệnh tất cả mọi thứ là tốt và hoạt động như mong đợi, nhưng một lần nữa nó không hoạt động từ một cuộc gọi hệ thống. Bất kỳ cái nhìn sâu sắc là rất hoan nghênh.

Trả lời

0

Rất có thể có một số phụ thuộc vào các biến môi trường mà bạn đã thiết lập làm người dùng vỏ không được hoàn thành bởi môi trường của httpd. Trước khi làm bất kỳ anh hùng nào với môi trường, tôi khuyên bạn nên bắt stderr từ công việc của mình (bằng cách thêm 2>/tmp/imgcaperrlog vào cuối ví dụ) và xem liệu nó có gây ra bất kỳ khiếu nại nào không.

+0

Tôi đã thực hiện một cảnh quay và nó không hoạt động = \ – William

+0

OK, phiên bản thứ hai lên. – chaos

+0

Tôi mệt mỏi và nó thậm chí không thực hiện. Đó là những gì làm cho tôi nghĩ rằng có lẽ môi trường mà php thực hiện các cuộc gọi hệ thống trong là một số khác nhau như thế nào. – William

3

Tôi đã tìm thấy giải pháp.

Tôi chỉ cần tạo tập lệnh shell sẽ gọi cho tôi. Sau khi chơi với nó trong một thời gian tôi đã nhận nó làm việc sau khi thêm export HOME="/var/www/" ở trên cùng của kịch bản.

Tôi hy vọng điều này sẽ giúp người khác.

+0

+1 để theo dõi giải pháp –

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