2012-04-16 21 views
8

Tôi có một máy chủ web được thiết lập trên máy tính xách tay của mình. Tôi đang xây dựng một ứng dụng web mà tôi đang truy cập thông qua mạng cục bộ. Tôi có một tập tin php, trong đó có những dòng sau:không thể chạy oowriter là người dùng web

$command = "/usr/bin/oowriter --invisible --convert-to pdf /var/www/hackathon/document/gaurav.doc -outdir /var/www/hackathon/pdf/" 
exec($command, $output, $return_var); 
print_r($output); 

Vì vậy, vấn đề là khi tôi chạy mã trên trong php terminal chạy một cách hoàn hảo. Nhưng khi được truy cập thông qua trình duyệt web, đầu ra chỉ trống và không có chuyển đổi nào được thực hiện như dự định.

lỗi Apache log cho thấy các dòng sau:

[framework Java] Lỗi trong chức năng createSettingsDocument (elements.cxx).
javaldx không thành công!
Cảnh báo: không thể đọc đường đi từ javaldx

Tôi đã thử các giải pháp từ https://wiki.archlinux.org/index.php/Libreoffice#Fixing_Java_Framework_Error. Nhưng nó không hoạt động.

Tôi đang sử dụng OpenJDK 7.

Có ai có ý tưởng về cách thực hiện công việc này không?

+0

Trong trường hợp của tôi, đặt HOME =/tmp, thư mục libreoffice cố gắng truy cập, làm cho nó hoạt động. Fraber và ConsuLanza Informatica có cách tiếp cận tốt. Cảm ơn mọi người. Ngoài ra, câu trả lời tuyệt vời trong [bài đăng liên quan này] (https://stackoverflow.com/questions/12101855/libreoffice-headless-refuses-to-convert-unless-root-wont-work-from-php-scrip) đã giúp tôi tìm ra nó cuối cùng. –

Trả lời

3

OpenOffice cần thư mục người dùng. Vì bạn đang cố gắng gọi OpenOffice với máy chủ web, bạn phải cấp cho người dùng quyền truy cập ghi tương ứng là. Trên Debian, ví dụ, đó có nghĩa là để cho phép www-data để viết thư cho /var/www/.openoffice.org/:

mkdir /var/www/.openoffice.org 
chown www-data /var/www/.openoffice.org 
+1

Tôi không thể đánh dấu câu trả lời này vì tôi không biết liệu nó có giúp ích gì cho vấn đề của OP hay không, nhưng hữu ích khi biết về việc sử dụng LibreOffice không đầu với Alfresco 4.2, vì lỗi này xuất hiện trong nhật ký khi cố gắng (và không) để xem trước tài liệu. – Vaughany

6

Không thể bỏ phiếu, không thể bình luận (chưa) ... Vì vậy, ...

Điều mà Tim-Erwin nói là đúng.

Các lỗi thực sự khẳng định rằng Lỗi trong chức năng createSettingsDocument mà là một gợi ý rằng một số hàm có tên createSettingsDocument (lưu ý: tạo Document Settings) là không ....

Đây là cách bạn (hoặc ít nhất tôi) nhận được nó để làm việc: văn phòng miễn phí

  1. Run as một người dùng bình thường một lần và lưu ý tên thư mục nó tạo ra.
  2. Kiểm tra người dùng nào máy chủ đang chạy (hoặc người dùng PHP đang chạy , có thể khác với www-data nếu bạn đang sử dụng FPM, v.v ...).
  3. Kiểm tra những gì các thư mục chính được thiết lập để cho người dùng này (từ /etc/passwd ví dụ)
  4. Tạo thư mục lưu ý trong bước 1 trong thư mục từ bước 3
  5. Thay đổi chủ sở hữu của thư mục đã tạo vào trường dùng từ bước 2

Mở máy chủ của tôi thư mục cần thiết thực sự là /var/www/libreoffice, trong khi ở máy tính để bàn của tôi, thư mục sẽ được các /var/www /.config/libreoffice để bạn cần đảm bảo.

1

Tôi nhận được thông báo lỗi tương tự đang chạy "ooffice --headless --convert-to pptx filename" từ một máy chủ Web (thực sự là "NaviServer" 4,99). Các giải pháp trên không giải quyết được vấn đề của tôi, nhưng họ đã giúp tôi đi đúng hướng. Hóa ra là NaviServer thay đổi biến môi trường "HOME" thành thư mục cài đặt của nó/usr/local/ns, để LibreOffice cố gắng truy cập và tạo một thư mục .config trong thư mục này. Tôi phát hiện ra bằng cách thực hiện lệnh BASH "set" từ máy chủ Web và kiểm tra các biến môi trường.

3

Câu trả lời của người gian lận giải quyết được vấn đề cho tôi!

sử dụng:

$cmd = 'HOME='.getCWD().' && export HOME && libreoffice --headless ....'; 
exec($cmd); 

libreoffice sau đó tạo ra '.config' và thư mục 'libreoffice' trong thư mục php script. Rõ ràng nó phải được ghi bởi quá trình webserver.

+0

Đây là câu trả lời đúng - Tôi đã đập đầu của tôi về điều này trong vài giờ cố gắng sử dụng cả unoconv và libreoffice trực tiếp. – ckm

+0

cảm ơn, đây là câu trả lời đúng. –

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