2012-04-16 14 views
8

मेरे पास मेरे लैपटॉप पर एक वेब सर्वर स्थापित है। मैं एक वेब एप्लिकेशन बना रहा हूं जिसे मैं स्थानीय नेटवर्क के माध्यम से एक्सेस कर रहा हूं। मैं एक PHP फ़ाइल में निम्नलिखित लाइनों में शामिल हैं:वेब उपयोगकर्ता के रूप में oowriter चलाने में असमर्थ

$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); 

तो, समस्या यह है कि जब मैं टर्मिनल php में उपरोक्त कोड को चलाने के लिए पूरी तरह से चलाता है। लेकिन जब किसी वेब ब्राउज़र के माध्यम से पहुंचाया जाता है, तो आउटपुट खाली होता है और इरादे के अनुसार कोई रूपांतरण नहीं किया जाता है।

अपाचे त्रुटि लॉग निम्नलिखित लाइनों पता चलता है:

[जावा ढांचा] समारोह createSettingsDocument करने में त्रुटि (elements.cxx)।
javaldx विफल!
चेतावनी: javaldx

मैं https://wiki.archlinux.org/index.php/Libreoffice#Fixing_Java_Framework_Error से समाधान की कोशिश की है से पथ पढ़ने में विफल। लेकिन यह काम नहीं किया।

मैं OpenJDK 7.

उपयोग कर रहा हूँ

किसी को भी यह कैसे काम करने के लिए पर कोई विचार है?

+0

मेरे मामले में, HOME =/tmp सेटिंग, निर्देशिका libreoffice पहुंचने का प्रयास करें, इसे काम किया। फ्रैबर और कंसुल्ज़ा इंफॉर्मेटिका के पास अच्छा दृष्टिकोण है। Thx दोस्तों। इसके अलावा, इस [संबंधित पोस्ट] में महानतम जवाब (https://stackoverflow.com/questions/12101855/libreoffice-headless-refuses-to-convert-unless-root-wont-work-from-php-scrip) ने मेरी मदद की अंततः इसे बाहर निकालना। –

उत्तर

3

ओपनऑफिस को उपयोगकर्ता निर्देशिका की आवश्यकता है। चूंकि आप वेब सर्वर के साथ ओपनऑफिस का आह्वान करने का प्रयास कर रहे हैं, इसलिए आपको संबंधित उपयोगकर्ता लेखन पहुंच प्रदान करनी होगी। डेबियन पर, उदाहरण के लिए, कि www-डेटा लिखने के लिए अनुमति देने के लिए मतलब होगा /var/www/.openoffice.org/ को:

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

मैं इस जवाब को चिह्नित नहीं कर सकता क्योंकि मुझे नहीं पता कि यह ओपी की समस्या से मदद करता है, लेकिन यह अल्फ्रेस्को 4.2 के साथ लिबर ऑफिस का उपयोग करने के संदर्भ में जानना उपयोगी था, क्योंकि यह त्रुटि लॉग इन करते समय लॉग में दिखाई देती है (और असफल) दस्तावेज़ों का पूर्वावलोकन करने के लिए। – Vaughany

6

वोट नहीं कर सकते हैं, फिर भी टिप्पणी नहीं कर सकता () ... तो ...

टिम-इरविन ने क्या कहा सच है।

त्रुटि वास्तव में कहा गया है कि समारोह createSettingsDocument में त्रुटि जो एक संकेत है कि कुछ createSettingsDocument (ध्यान दें: सेटिंग दस्तावेज़ बनाने) का नाम समारोह है विफल हो रहा है ....

करने का तरीका यहां (या कम से कम मैं सामान्य उपयोगकर्ता के रूप में एक बार

  1. भागो Libre कार्यालय और ध्यान दें निर्देशिका नाम यह बनाता है:) यह काम करने के लिए मिलता है।
  2. जांचें कि कौन सा उपयोगकर्ता सर्वर चल रहा है (या कौन सा उपयोगकर्ता PHP चला रहा है, जो कि यदि आप एफपीएम आदि पर हैं तो www-data से भिन्न हो सकता है ...)।
  3. चेक क्या होम निर्देशिका (से /etc/उदाहरण के लिए पासवर्ड)
  4. डायरेक्टरी बनाएँ इस उपयोगकर्ता के लिए के लिए सेट है कदम से निर्देशिका में चरण 1 में नोट 3
  5. करने के लिए बनाया निर्देशिका के मालिक बदलें कदम 2

अपने सर्वर पर से उपयोगकर्ता की जरूरत निर्देशिका, /var/www/लिब्रे ऑफिस वास्तव में था, जबकि मेरे डेस्कटॉप मशीन में, निर्देशिका किया गया की हैं /var/www /।config/libreoffice इसलिए आपको सुनिश्चित करना होगा।

1

मुझे एक वेब सर्वर (वास्तव में "NaviServer" 4.99) से "ooffice --headless --convert-to pptx फ़ाइल नाम" चलाने वाला एक ही त्रुटि संदेश मिला। उपरोक्त समाधानों ने मेरी समस्या का समाधान नहीं किया, लेकिन उन्होंने मुझे सही रास्ते पर ले लिया। यह पता चला कि NaviServer "HOME" पर्यावरण परिवर्तक को इसकी स्थापना निर्देशिका/usr/local/ns में बदल देता है, ताकि लिबर ऑफिस ने इस निर्देशिका में .config फ़ोल्डर को एक्सेस करने और बनाने का प्रयास किया हो। मुझे वेब सर्वर से BASH "सेट" कमांड निष्पादित करके और पर्यावरण चर की जांच करके पता चला।

3

फ्रैबर के जवाब ने मेरे लिए समस्या हल की!

उपयोग किया:

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

लिब्रे ऑफिस फिर '.config' और php स्क्रिप्ट निर्देशिका में 'लिब्रे ऑफिस' निर्देशिका बनाया। स्पष्ट रूप से यह वेबसर्वर प्रक्रिया द्वारा लिखने योग्य होना चाहिए।

+0

यह सही जवाब है - मैं इस पर अपने सिर को कई घंटे तक अनजान और libreoffice का उपयोग करने की कोशिश कर रहा है। – ckm

+0

धन्यवाद, यह सही जवाब है। –