2012-08-24 18 views
9

Chạy máy chủ Ubuntu không đầu 12.Libreoffice - không đầu từ chối chuyển đổi trừ khi gốc, sẽ không hoạt động từ tập lệnh PHP

root @ server: chown www-data /my/path/ -R

root @ server: chgrp www-data /my/path/ -R

root @ server: chmod 755 /my/path/ -R

root @ server: libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

convert /my/path/foo.ppt -> /my/path/foo.pdf 

trình như một say mê.


root @ server: sudo -i -u www-data

$ libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

convert /my/path/foo.ppt -> /my/path/foo.pdf 
Error: Please reverify input parameters... 

Chết tiệt.


root @ server: sudo -i -u someotheruser

$ libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path

convert /my/path/foo.ppt -> /my/path/foo.pdf 
Error: Please reverify input parameters... 

Chết tiệt.

Bất kỳ ai có ý tưởng nào? Cố gắng nghiên cứu điều này chỉ làm tôi bối rối hơn. Đây có phải là một lỗi hoặc một số quirk phụ thuộc?

+0

Tôi có cùng một vấn đề trong Ubuntu 12.04, tôi đang cố gắng chuyển đổi các tệp ods thành pdf và nó làm việc với sudo chỉ –

+0

@Jacek Wysocki - Tôi tìm thấy một giải pháp thay thế bằng cách sử dụng DocumentConverter.py với LibreOffice (http://www.artofsolving.com/opensource/pyodconverter). Chỉ có rắc rối là, bạn cần phải daemonize libreoffice, đó là loại một nỗi đau trong ass và gây ra cho tôi một số rắc rối. Oh, và daemon vẫn cần chạy như root. – Greg

+1

Tôi cũng có một: '$ sudo visudo' và tôi đã thêm dòng này: '% người dùng ALL = (ALL) NOPASSWD: libreoffice' sau đó 'sudo libreoffice ...' không có mật khẩu –

Trả lời

-1

tôi sẽ có một cái nhìn vào

http://dag.wieers.com/home-made/unoconv/

Công cụ này sẽ phù hợp hơn để chuyển đổi tập tin của bạn đúng cách. Nó có sẵn trên repos ubuntu, do đó, sẽ không có vấn đề với cài đặt.

1

Giống như Jacek đã nêu trong nhận xét của mình, hãy làm cho người dùng bạn đang cố thực hiện lệnh dưới dạng sudoer không cần mật khẩu. Sau đó, thay đổi lệnh libreoffice của bạn thành

sudo libreoffice <rest of command> 

Làm việc cho tôi. Tôi gặp vấn đề tương tự.

0

Bạn không thể chạy nhị phân soffice nhị phân với người dùng www-data. Thay vào đó, hãy sử dụng người dùng có đặc quyền sudo. Kiểm tra Gist của tôi https://gist.github.com/nathanielvarona/423bda9e4a8a4f0f9bbf#file-soffice-listener-sh

Và vì bạn sẽ sử dụng điều này trong PHP. Chỉ cần thử PHP-FPM. Cài đặt nó và sau đó sửa đổi tập tin /etc/php5/fpm/pool.d/www.conf.

Từ

user = www-data 
group = www-data 

Để:

user = ubuntu 
group = ubuntu 

tôi đã chạy thành công này trong AWS EC2 và cũng với VBox máy ảo của tôi.

14

cuối cùng tôi đã tìm thấy một câu trả lời cho điều này ... Add:

export HOME=/tmp && 

vào đầu, vì vậy:

export HOME=/tmp && libreoffice --headless --convert-to pdf:writer_pdf_Export /my/path/foo.ppt --outdir /my/path 

Đó làm việc cho tôi trên CentOS 6.5, và như shell_exec() trong PHP.

+3

Điều này thực sự cần câu trả lời được chấp nhận. Bạn đã cứu ngày của tôi. –

+1

Bạn cũng có thể sử dụng: 'HOME =/tmp libreoffice --headless --convert-to pdf: writer_pdf_Export /my/path/foo.ppt --outdir/my/path' vì bạn chỉ đặt biến HOME cho một quá trình. – puzzlement

2

Tôi đã gặp lỗi tương tự, nhưng sự cố không phải là quyền truy cập gốc. Lệnh đã sai.

này đã làm việc cho tôi, nhận được văn bản từ một tài liệu trong LibreOffice 4.2 .:

soffice --headless --convert-to txt:Text file_to_convert.odt 

(http://ask.libreoffice.org/en/question/14130/how-do-i-install-filters-for-the-soffice-command/)

+0

Ngoài ra tôi đã phải báo tên bộ lọc 'soffice --headless --convert-to txt:" Văn bản "./*. Docx' (có điều này là để cài đặt LibreOffice trên Kubuntu 14.10,' apt-file' xác nhận rằng 'libreoffice-common:/usr/bin/soffice'). – pbhj

4

Chúng tôi phải đối mặt với vấn đề tương tự khi chạy soffice không đầu nhị phân (LibreOffice 5.0.5.2) trong một thùng chứa CloudFoundry (Diego) như một phần của ứng dụng NodeJS.

Có vẻ như các phiên bản mới hơn của libreoffice không mong đợi có thể ghi HOME, nhưng cố gắng viết thư cho TMPDIR.

strace cho thấy: 8349 mkdir("app/tmp", 0777) = -1 ENOENT (No such file or directory) 8349 open("app/tmp/lu8349pzgegi.tmp", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 ENOENT (No such file or directory)

với TMPDIR=app/tmp

Chúng tôi cố định nó bằng cách thiết lập TMPDIR vào một thư mục đó là ghi được bởi quá trình ứng dụng người sử dụng, tức là TMPDIR=/tmp trên CloudFoundry:

process.env.TMPDIR = "/tmp";

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