2012-02-27 10 views
5

मैं एक जावा कार्यक्रम पर अमल करने के लिए php कार्यकारी समारोह के साथ एक पीडीएफ फाइल साइन करने की कोशिश कर रहा हूँ, लेकिन काम नहीं करता:php कार्यकारी समारोह के साथ जावा कार्यक्रम नहीं चलाया जा सकता

exec('java -jar PROGRAM.jar -n -t ORIGIN.pdf -o DESTINY.pdf -s CERTIFICATE -p PASSWORD', $output, $return); 

जब मैंने इसे, पर अमल $ आउटपुट एक खाली सरणी है और $ वापसी एक int (1) है, लेकिन यदि मैं चलाता हूं:

java -jar PROGRAM.jar -n -t ORIGIN.pdf -o DESTINY.pdf -s CERTIFICATE -p PASSWORD 

कमांड लाइन में यह काम करता है। क्या कोई मेरी मदद कर सकता है?

धन्यवाद।

+3

अगर आप काम करता है -Djava.awt.headless=true विकल्प आपको जावा है कि यह एक अप्रत्यक्ष कॉल है, इसलिए इसमें कीबोर्ड, माउस पर नियंत्रण नहीं किया गया है कह रहे हैं, आदि जोड़ना जावा बाइनरी के लिए पूरा रास्ता आपूर्ति? उदाहरण के लिए '/ usr/bin/java'। बाइनरी के पथ को खोजने के लिए 'कौन सा जावा' का प्रयोग करें। – Treffynnon

+1

@Treffynoon की टिप्पणी के अतिरिक्त, आपको अपने PROGRAM.jar, ORIGIN.pdf और DESTINY.pdf फ़ाइलों को पूरा पथ निर्दिष्ट करने की आवश्यकता हो सकती है –

+0

मैं बस फ़ाइलों और कमांड के लिए पूर्ण पथ का उपयोग करता हूं और काम नहीं करता हूं। – josebailo

उत्तर

1

अंत में मैं समस्या का समाधान कर सकता हूं।

समाधान है:

exec('java -Djava.awt.headless=true -jar PROGRAM.jar -n -t ORIGIN.pdf -o DESTINY.pdf -s CERTIFICATE -p PASSWORD', $output, $return); 

+0

नमस्ते यह मेरे लिए काम नहीं कर रहा है, मैंने उपर्युक्त कोड की कोशिश की, मुझे अभी भी परिणाम के लिए खाली सरणी मिल रही है –

3

@Treffynnon सही है। कमांड प्रॉम्प्ट से प्रोग्राम को निष्पादित करने और अन्य प्रोग्राम से अंतर पर्यावरण चर और अनुमतियां है।

तो, पहले जांचें कि क्या उपयोगकर्ता आपके सर्वर को चलाता है जहां PHP चल रहा है, एप्लिकेशन को चलाने और उपयुक्त फ़ाइलों तक पहुंचने की अनुमति है।

तब को

  1. जावा पथ को सत्यापित
  2. PROGRAM.jar
  3. ORIGIN.pdf
  4. DESTINY.pdf

आप शायद पथ, यानी बेहतर संशोधित करना चाहिए निर्दिष्ट यह या तो रिश्तेदार या पूर्ण संकेत का उपयोग कर रहा है। ऐसा इसलिए है क्योंकि वर्तमान कार्य निर्देशिका 2 मामलों में भिन्न हो सकती है।

शुभकामनाएं।

2

लगभग निश्चित रूप से PHP "जावा" के पथ को नहीं जान पाएगा। यदि आप लिनक्स में हैं, तो "कौन सा जावा" चलाएं और पूरे जावा पथ को डालें जिसे आप निष्पादन कॉल में वापस लेते हैं, उदा।

exec('/usr/bin/java -jar PROGRAM.jar -n -t ORIGIN.pdf -o DESTINY.pdf -s CERTIFICATE -p PASSWORD', $output, $return); 
संबंधित मुद्दे

 संबंधित मुद्दे