L'exécution de libreoffice à partir de php exec()
J'ai installé libreoffice sans tête sur un freebsd-serveur avec apache pour convertir des documents par programme (par exemple, odt->format pdf). Il fonctionne à partir de la ligne de commande! Mais mon objectif est d'être en mesure de le faire à partir de php. Cela exige que l'utilisateur du web (www) peuvent s'exécuter libreoffice. Mais il ne peut pas.
Lors de l'exécution de libreoffice que mon utilisateur, j'obtiens:
%libreoffice --headless -convert-to pdf Litteraturundervisningogit.doc
javaPathHelper: not found #This should not be a problem, says people on the net.
convert /usr/home/bundsgaard.net/www/jeppe/foredrag/Litteraturundervisningogit.doc ->
/usr/home/bundsgaard.net/www/jeppe/foredrag/Litteraturundervisningogit.pdf using writer_pdf_Export
%
Si j'essaie la même commande en tant que root, il ne fonctionne pas. La même chose est le problème avec le www-utilisateur depuis php:
sp# libreoffice --headless -convert-to pdf Litteraturundervisningogit.doc
javaPathHelper: not found
sp#
Le problème est que je ne reçois pas toutes les informations à partir de libreoffice, donc je ne sais pas pourquoi libreoffice ne veut pas courir comme les autres utilisateurs de la mienne.
Ma question est: Comment puis-je donner le www-autorisation de l'utilisateur pour exécuter libreoffice via exec() en php?
- Est-ce juste un problème de CHEMIN d'accès? Qu'est-ce que dans leur
$PATH
's? - Vous avez testé en ligne de commande avec l'utilisateur root,
%sudo php program.php
, qu'en tant que client d'avoir l'autorisation?
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à résoudre ce problème avec un rapide
export HOME=/tmp
avant d'exécuter la commande convert, cela donne libreoffice quelque part en écriture c'est de la magie.Pas strictement une réponse, mais plutôt que d'utiliser PHP exec, vous pouvez envisager d'utiliser PUNO, une PHP5 module qui permet d'accéder à la OpenOffice.org UNO de Programmation de l'API.
Avez-vous ce blog?
http://geekswithblogs.net/robertphyatt/archive/2011/11/19/converting-.docx-to-pdf-or-.doc-to-pdf-or-.doc.aspx
J'ai eu le même problème et oui (merci Wrikken) après l'ajoutant
/usr/local/sbin
à la variable d'environnement PATH, j'ai été en mesure d'exécuter libreoffice tant que www-data sous apache.Je vous recommande de mettre chemin du fichier de configuration d'abord vous exécutez exec() ou shell_exec();
IE:
$outputdir = chmod 777 Et le même forlder à partir de libreoffice commande "--outdir"
Sur Universal Network Objects (UNO), il y a quelques "plug-and-play" de l'utilisateur final des outils, voir Docvert et JODConverter (jODconverter et pyODconverter). Tout peut alors être appelé en tant que web-service ou exec par PHP.
Cela fonctionne pour moi.
Assurez-vous d'avoir installé java RE, par exemple dans ubuntu:
Tout d'abord, trouver l'emplacement de votre libreoffice
Inclure l'emplacement du dossier dans le CHEMIN d'accès, et aussi de mettre la MAISON var en ajoutant ces lignes: