2012-06-26 39 views
6

Tôi đang cố gắng để PhantomJS chạy qua PHP.PhantomJS không hoạt động trong PHP thông qua trình duyệt (nhưng thực hiện qua dòng lệnh, và thậm chí bằng cách chạy PHP thông qua dòng lệnh)

Khi tôi chạy tệp JavaScript trực tiếp thông qua dòng lệnh, nó hoạt động tốt. Khi tôi chạy php render_html.php trong dòng lệnh, mà chỉ cần chạy một exec(), nó hoạt động tốt. Tuy nhiên, khi tôi thử mở tập tin php này trong trình duyệt, nó không làm gì cả. Tôi thậm chí không nhận được bất cứ điều gì trở lại để echo.

Tôi đã thực hiện tất cả thử nghiệm này cục bộ trên OS X và trên máy chủ EC2 của mình và tôi nhận được kết quả tương tự.

+0

Tôi biết đó là cách quay lại nhưng tôi gặp vấn đề tương tự, nhưng trong CentOS. Tôi giả sử cú pháp của tập tin sudoers trong CentOS sẽ khác nhau? – TomCDona

+0

Xin chào! Tôi đã chuyển phụ lục câu trả lời của bạn thành câu trả lời phù hợp, vì vậy mọi người truy cập vào Stack Exchange thông qua API nhận được sự phân chia Q/A chính xác. Nếu bạn muốn làm cho câu trả lời của riêng bạn, xin vui lòng làm, và tôi sẽ loại bỏ phiên bản CW của riêng tôi. – halfer

Trả lời

0

Đây có thể là sự cố về quyền, kiểm tra xem người dùng đang chạy máy chủ web có quyền chạy tệp thực thi ảo hay không.

+1

Tôi đã kiểm tra các quyền trên bản thân thực thi. Họ là 755, mà là đủ. Thay đổi thành 777, và vẫn không có gì. Cảm ơn, mặc dù. – bearfriend

0

(Được đăng thay mặt cho OP).

Dường như có vấn đề về quyền. Dường như Apache có thể được đối xử hơi khác so với những người dùng khác? Mặc dù các quyền chuẩn sẽ cho phép bất kỳ người dùng nào truy cập vào ứng dụng PhantomJS, nhưng apache vẫn không thể.

Bất kỳ ai có vấn đề tương tự phải đọc qua this question and the answers.

Đây là giải pháp được điều chỉnh một chút cho trường hợp cụ thể của tôi (trên máy chủ Linux). Chỉnh sửa sudoers file của bạn (/ etc/sudoers) để bao gồm các dòng sau:

apache ALL=NOPASSWD: /usr/bin/phantomjs 

Tôi đã làm điều này với emacs, (C-x C-q để cho phép chỉnh sửa các tập tin chỉ đọc). Tôi dường như không có bất kỳ vấn đề với điều đó, nhưng tôi đoán sử dụng một cái gì đó gọi là visudo được khuyến khích để chỉnh sửa sudoers. Emacs đã làm việc cho tôi, nhưng bạn nên tìm nó.

Điều này đã cho phép người dùng apache truy cập rõ ràng vào ứng dụng PhantomJS bằng cách cấp quyền truy cập sudo, chỉ giới hạn ở ứng dụng PhantomJS.

-1

Gần đây tôi đã làm việc với các phantomj trong môi trường 7 và gặp vấn đề tương tự như op. Tôi đã thử các giải pháp và phương pháp mà tôi tìm thấy trong stackoverflow trên đầu trang của mỗi khác, vì vậy tôi không khá chắc chắn phương pháp nào đã làm việc hoặc phương pháp nào đã làm việc cùng nhau để giải quyết vấn đề. Tôi cố gắng

  1. cho 777 phép phantomjs js nhị phân và mục tiêu và chứa thư mục (không làm việc)
  2. visudo và cho phép Apache để sử dụng phantomjs không có mật khẩu (không làm việc)
  3. thêm apache vào nhóm sys (không hoạt động)
  4. vô hiệu hóa selinux sau khi vô hiệu hóa selinux và khởi động lại hệ điều hành, các phantomj bắt đầu hoạt động trong trình duyệt. : D: D
Các vấn đề liên quan