2012-08-24 1 views
9

Exécution du serveur Ubuntu sans tête 12.quelque chose.Libreoffice --headless refuse de convertir à moins que root, ne fonctionne pas à partir du script PHP

racine serveur @: chown www-data /my/path/ -R

racine serveur @: chgrp www-data /my/path/ -R

racine serveur @: chmod 755 /my/path/ -R

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

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

fonctionne comme un charme.


racine serveur @: 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... 

Bon sang.


racine serveur @: 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... 

Bon sang.

Quelqu'un a une idée? J'essayais de faire des recherches, cela me rendait plus confus. Est-ce probablement un bug ou un problème de dépendance?

+0

J'ai le même problème sous Ubuntu 12.04, j'essaie de convertir les fichiers ods en pdf et ça marche avec sudo seulement –

+0

@Jacek Wysocki - J'ai trouvé une solution de contournement en utilisant DocumentConverter.py avec LibreOffice (http://www.artofsolving.com/opensource/pyodconverter). Seul problème, vous devez démonter libreoffice, ce qui est une sorte de douleur dans le cul et m'a causé quelques problèmes. Oh, et le démon doit toujours fonctionner en tant que root. – Greg

+1

J'ai aussi un: '$ sudo visudo' et j'ai ajouté cette ligne: '% utilisateurs ALL = (ALL) NOPASSWD: libreoffice' après que 'sudo libreoffice ...' sans mot de passe –

Répondre

-1

je prendrais un coup d'oeil sur

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

Cet outil devrait être plus adapté pour convertir vos fichiers correctement. Il est disponible sur les repos Ubuntu, donc il ne devrait pas y avoir de problème avec l'installation.

1

Tout comme Jacek l'a indiqué dans son commentaire, faites en sorte que l'utilisateur que vous essayez d'exécuter la commande soit un sudoer sans mot de passe requis. Ensuite, modifiez votre commande libreoffice pour qu'elle soit

sudo libreoffice <rest of command> 

J'ai travaillé pour moi. J'ai eu le même problème.

0

Vous ne pouvez pas exécuter le binaire libreoffice soffice avec l'utilisateur www-data. Utilisez plutôt un utilisateur avec le privilège sudo. Vérifiez mon Gist https://gist.github.com/nathanielvarona/423bda9e4a8a4f0f9bbf#file-soffice-listener-sh

Et puisque vous allez l'utiliser en PHP. Essayez aussi PHP-FPM. Installez-le, puis modifiez le fichier /etc/php5/fpm/pool.d/www.conf.

De

user = www-data 
group = www-data 

Pour:

user = ubuntu 
group = ubuntu 

J'ai couru avec succès dans ce AWS EC2 et aussi avec mes machines virtuelles VBox.

14

Je trouve enfin une réponse à cette ... Ajouter:

export HOME=/tmp && 

au début, donc:

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

Cela a fonctionné pour moi sur CentOS 6.5, et comme shell_exec() en PHP.

+3

Cela devrait vraiment être la réponse acceptée. Tu as sauvé ma journée. –

+1

Vous pouvez également utiliser: 'HOME =/tmp libreoffice - headless --convertir en pdf: writer_pdf_Export /my/path/foo.ppt --outdir/my/path' puisque vous ne définissez que la variable HOME pour une processus. – puzzlement

2

J'ai eu cette même erreur, mais le problème n'était pas l'accès root. La commande était erronée.

Cela a fonctionné pour moi, obtenir le texte d'un document dans 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

En plus je devais citer le nom de filtre 'soffice --headless --convert-to txt:" Text "./*. Docx' (oui c'est pour une installation de LibreOffice sur Kubuntu 14.10,' apt-file' confirme que 'libreoffice-common:/usr/bin/soffice'). – pbhj

4

Nous avons été confrontés au même problème lors de l'exécution du binaire sans tête soffice (LibreOffice 5.0.5.2) dans un conteneur CloudFoundry (Diego) dans le cadre d'une application NodeJS.

Il semble que les versions plus récentes de libreoffice n'attendent pas de HOME, mais essayent d'écrire en TMPDIR.

strace a montré: 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)

avec TMPDIR=app/tmp

Nous avons fixé en définissant TMPDIR dans un répertoire qui est accessible en écriture par le processus App utilisateur, à savoir TMPDIR=/tmp sur CloudFoundry:

process.env.TMPDIR = "/tmp";

Questions connexes