Calling macro in shell_exec not working


 
Thread Tools Search this Thread
Top Forums Programming Calling macro in shell_exec not working
# 1  
Old 03-17-2011
Calling macro in shell_exec not working

Hi guys! I really need your help.
I have a php code that should convert doc, ppt,etc. to pdf using openoffice. But its not working, and im not sure what the problem is.

Here's my php code:
PHP Code:
define('OOFFICE_LIBRARY''/usr/lib/openoffice.org/program/');
$convertToPdf OOFFICE_LIBRARY 'soffice -invisible -headless -norestore "macro:///Standard.Module1.SaveAsPdf("' $fileSourcePath '")"';
shell_exec($convertToPdf); 
the above command works fine when run directly on the command line, but when used in php code, its not working.

and here's my macro:
Code:
Sub SaveDocAsPdf ( cFile )
	Dim oDoc as object
	
	cURL = ConvertToUrl ( cFile )
	
	oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, Array(MakePropertyValue( "Hidden", True ),))
	
	cFile = Left( cFile, Len( cFile ) - 4 )
	cURL = ConvertToURL( cFile + ".pdf")
	
	
	'Save the document using a filter.
		oDoc.storeToURL( cURL, Array( MakePropertyValue( "FilterName", "writer_pdf_Export" ) ) )
		
	oDoc.close( True )
End Sub

Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
	' oPropertyValue = createUnoStruct( "com.sun.star.beans.PropertyValue" )
	Dim oPropertyValue As New com.sun.star.beans.PropertyValue
	If Not IsMissing( cName ) Then
		oPropertyValue.Name = cName
	EndIf
	If Not IsMissing( uValue ) Then
		oPropertyValue.Value = uValue
	EndIf
	MakePropertyValue() = oPropertyValue
End Function

I created the macro using the user 'root'. Through the command line, I used the "soffice " command that launches the openoffice. Btw, Im using a linux-php environment.

Hope someone could help me with this. Been trying to figure this out for days. Smilie Thanks a lot.
# 2  
Old 03-17-2011
Please describe this "doesn't work" in more detail.

You may need to check and make sure soffice is in your PATH, the path a webserver gives you may be far more minimal than you'd get running it in your own personal shell.

Also check the permissions of the macro file you're trying to use. Just because you can access it doesn't mean a CGI script can.
# 3  
Old 03-18-2011
Hi! Thanks for the reply! Smilie What i means by "doesn't work" is that its not converting the doc file i've uploaded to pdf file.

Regarding the permissions of the macro file, what should that be? I created the macro file by logging in as 'root' in the command line, launching open office by typing 'soffice', and then directly creating the macro by clicking tools>macros>organize macros>OpenOffice.org basic. And that's it. Should I create the macros using any other accounts?

Sorry, Im still a newbie regarding these macro, openoffice and linux stuff.. Smilie
# 4  
Old 03-18-2011
Quote:
Originally Posted by tweine
Hi! Thanks for the reply! Smilie What i means by "doesn't work" is that its not converting the doc file i've uploaded to pdf file.
Well, obviously. But what does it do? Does it print any error messages?
Quote:
Regarding the permissions of the macro file, what should that be?
Depends what you want to be able to read it. You haven't told me exactly what you're doing as who so that's hard to just guess.
Quote:
I created the macro file by logging in as 'root' in the command line
You need to create yourself a real user account ASAP. You can't just go around running ordinary applications as root all the time, that's dangerous.

Your macro file probably can't be read by anything but root. Try listing the permissions on it with ls -l filename
# 5  
Old 03-21-2011
Quote:
Well, obviously. But what does it do? Does it print any error messages?
It doesnt do anything. After clicking the upload button, the .doc file just uploads, but not converted. It reloads the page. Also, it doesnt display any errors.

Quote:
Depends what you want to be able to read it. You haven't told me exactly what you're doing as who so that's hard to just guess.
Then i guess the permission of the macro file should be executable by the apache or non-root users? since the user that runs the php is Apache?

Quote:
You need to create yourself a real user account ASAP. You can't just go around running ordinary applications as root all the time, that's dangerous.
Yes I already have my own user account. Should the macro file be created using my account or other accounts other than the root? What would be the difference if the macro is created not using the root account?

Sorry for too many question.. Smilie

---------- Post updated at 03:48 AM ---------- Previous update was at 03:28 AM ----------

Followup question. Im not sure which is the macro file.. Is it the "Module1.xba" file? Thanks! Smilie
# 6  
Old 03-22-2011
Quote:
Originally Posted by tweine
Yes I already have my own user account. Should the macro file be created using my account or other accounts other than the root?
That doesn't matter so much, either way you'll need to do something to let apache be able to read it. The point is to not do it as root.
Quote:
What would be the difference if the macro is created not using the root account?
The difference is that, when running it as root, you're running it as root, and by doing so, allowing ooffice unimpeded access to absolutely anything in the system whatsoever. If it decides to open your disk device and muck it up, it can. You're not protected from any mistakes, be they yours or by the programmers of ooffice.
Quote:
Followup question. Im not sure which is the macro file.. Is it the "Module1.xba" file? Thanks! Smilie
You know more about your macros than I do. I'm still not 100% sure that's even the problem. Did you correct your PATH?

Try grepping for MakePropertyValue to find out what file it's in. If it's in a config file in your home directory, ooffice probably won't have any idea where to look for it when not logged in as that user, so won't find it at all, you might have to force it into loading external macros somehow or set HOME to a fake value.

Last edited by Corona688; 03-22-2011 at 01:09 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Shell_exec is not working

I am trying to execute a command with shell_exec but this command does not work, other commands work <?php $output = shell_exec("tail /var/log/syslog"); echo "<pre>$output</pre>"; ?> (4 Replies)
Discussion started by: Rodrigo_Bueno
4 Replies

2. Shell Programming and Scripting

Sqlplus with shell_exec(); PHP command

Hi, I need to run a PL/SQL Query from a distant oracle server in order to create spool files and send it to my own server, using a php script. I firstly created a SH script called myscript.sh #!/bin/bash echo "This script is working" sqlplus... (8 Replies)
Discussion started by: cgstag
8 Replies

3. Shell Programming and Scripting

calling awk from php not working

I want to run awk from php to do some text processing. I am giving an extremely simple example below: onecol.awk file ------------------- { print "Hello!"; } f1.txt --------- aaa ccc eee f2.txt --------- (6 Replies)
Discussion started by: mary271
6 Replies

4. Web Development

php shell_exec

Hey guys i've recently been getting into php programming and i became thinking was it possible to create a php script that would allow you to run a terminal from the browser page? All i've pretty much got so far is: $var = $_GET; $output = php shell_exec($var); echo $output; ... (4 Replies)
Discussion started by: lordfirex
4 Replies

5. Shell Programming and Scripting

c binary not being executed with shell_exec()

I have written a c program. And compiled it to make a binary. Now when i try to call this binary from php page, it is not being executed. [ (2 Replies)
Discussion started by: xerox
2 Replies

6. Web Development

trouble with shell_exec()

If you aren't familiar with LaTeX, don't stress.. it's just a document markup language that I use for creating Math documents. Anyway, if I execute "latex /home/destructo/Desktop/example.tex" inside my command prompt (ubuntu), it will create the desired document... I decided to try to create a... (3 Replies)
Discussion started by: tyrick
3 Replies

7. Shell Programming and Scripting

ssh is not working while calling through expect shell script

Hi, Please share you experience and way out on below error:--> #!/bin/bash -xv FILE=login.txt + FILE=login.txt CONNECT=sshlogin.exp + CONNECT=sshlogin.exp SERVERNAME=$1 + SERVERNAME=192.168.12.1 MyServer="" + MyServer= MyUser="" + MyUser= MyPassword="" + MyPassword= exec 3<&0 +... (6 Replies)
Discussion started by: manish_1678
6 Replies

8. Shell Programming and Scripting

Help with PHP and shell_exec!!!

Hi, I've been working on a PHP script which is "supposed" to find an individuals weather based on their geolocation. This script uses "shell_exec". I have checked my syntax and it is correct, but there is still something missing; for when I call on the script using: <form action='/weather.php'... (15 Replies)
Discussion started by: o0110o
15 Replies

9. Programming

Make-question - redefine a macro, using another macro..?

I think there is no problem to use any macro in a new macro definishion, but I have a problem with that. I can not understand why? I have a *.mak file that inludes file with many definitions and rules. ############################################## include dstndflt.mak ... One of the... (2 Replies)
Discussion started by: alex_5161
2 Replies

10. Shell Programming and Scripting

calling current working dir from script

Hello, I am having problem in setting current working directory from shell. I want to set pwd as an environmental variable in a script. I am following an existing script which is defined as HOME=$(shell dirname `pwd`) C_HOME=$(shell echo $(HOME) | sed -e 's:\/:\\\/:g' ) But when I am trying... (3 Replies)
Discussion started by: chandra004
3 Replies
Login or Register to Ask a Question