I'm using PDFTK to merge some PDFs on my Amazon EC2 instance running Windows Server and IIS7.
When I try running PDFTK using PHP exec(), it does not work. For example:
<?php
$e = exec("pdftk");
var_dump($e); //output is: string(0) ""
?>
I can get other commands to work using exec such as exec("ping 192.168.2.1") but I can't get PDFTK working.
I can also run pdftk from DOS command line, so I know it's installed properly.
I also set the permissions to pdftk.exe to full access for all users (thinking this was a permissions issue).
I remember having a similar problem when I installed PDFTK on another Windows Server Amazon EC2 instance, but I forgot exactly what I needed to change. I thought it had something to do with IIS_USR Permissions but it was a while back and I don't remember the specifics.
Thank you.
The application either needs to be in the same directory as the script, or within the $PATH environment variable for the user executing the PHP script. With IIS, this is not the user you are logged in with.
Related
I am using apache server under xampp. I have some matlab exe file that I want to execute. I used this template
$tmp = exec($command, $output, $return_var);
while $command contains the exact command to execute the file using cmd.
What is happening is the page hangs and when I debug, I found that the server hang while calling this exec command.
I searched the web and tried many things like run the Apache service and my user account and give the user all administrator privileges, but unfortunately it still stuck.
Any help or advice would be appreciated.
The problem with my code was because the Matlab code is accessing file system and also reads an excel sheet. So, it was all about permissions.
The solution for this problem has 2 parts:
1. Apache should run as a a windows service with checking allow service to interact with desktop in the properties.
2. I found that there is no way to access windows COM objects to read excel in normal way. So, instead we should use xlsread in basic mode.
That's all.
On my CentOS machine I have installed PHP. When I log onto that machine from another machine(fedora) through ssh and run a PHP script for writing to a file, it works perfectly.
But when I open a browser from my fedora machine and open the same PHP script, it fails to open that file for writing. The browser works for read and other echo commands.
I don't get the reason why is it happening. What would be a quick solution to my problem?
When you use CLI, you execute script as user that you logged in as through SSH. On the other hand, when you execute a script through a web browser and your have PHP installed as Apache module, it is running as apache user on CentOS (source).
These two users may have different permissions, so one has permissions to write to the file and other does not.
Long story short: change file permissions so apache user can write to it.
I have tried to use the Zend Framework to do my PDF conversion in PHP but cannot figure out how to install it. I found this program that allows for PDFs to be printed/converted via the command line, so I thought I could do an exec() command in PHP to run the program and convert my file on the server for me.
The program is PDFCreator from pdfforge.org and I am trying to convert .DOC files to .PDF files. This command line below works perfectly when running from cmd.exe. However, when running it from PHP I believe that it is trying to execute under the user System and not working properly. (I did a php exec('whoami') and it came back as System.) I also changed the user of which Apache opens up as to an Admin account and still have been unable to get it to work.
"C:\Program Files\PDFCreator\PDFCreator.exe" /OptionsFile"C:\PDFCreator.ini" /PF"C:\test.doc"
Any thoughts as to why it I cannot get the same behavior when running the command using exec()?
Thats because Apache user and account user should be the same, ex: your windows user is Pedro, so Apache user should be Pedro...you shoul open the services.msc and in the session tab allow apache to interact with the current desktop....in that way, the share the same windows session and desktop....but it shoud represent a security risk and it's not recommended.
Saludos.
I am running a cookie-cutter r-script from the command-line using the php5.3 exec function. The idea being that the user selects data, php runs the script, and the user is able to download the high resolution graphic. I've run this on my local testbed with apache and everything worked fine, however, the production server is Windows Server 2003 with IIS7 (something I cannot control). It seems with IIS7, by default, php does not have access to cmd.exe. We've tried changing permission to cmd.exe with the "calcs" command with no success.
How do I give php permission to access the command-line through the use of the exec function?
P.S. I know, I know, I know. No user input is being executed with the exec function. We just want to take advantage of R's high resolution graphics and data processing capabilities.
Relevant Details:
OS is windows server 2003 64-bit
IIS7
The server is an Amazon EC2 instance
(I don't believe this to be an issue with Amazon as I've heard of people do similar things with a LAMP stack Amazon instance)
EDIT: the problem ended up being that for some reason IUSR did not have permission to use the "start" command in command-line.
REM commands below did not work
start "Path to .exe" "File to process"
start "" "Path to .exe" "File to process"
REM this one did however
"Path to .exe" "File to process"
It's an IIS issue i think (You could install one locally to test it) but if you run with anonymous authentication you need to change the anonymous user to a regular user (which will have privileges to launch cmd.exe). Also check the identity of the application pool user, since sometime it runs with a limited account too.
i read so many similar questions but nothing works with me
im using wamp 2.2 ,Apache 2.0 , PHP V5.3.8
safe_mode=off - disabled_functions deleted from php.ini i'm trying to exec
exec("chrome.exe google.com");
nothing happens and when i try
exec("calc");
the windows shows weird message to execute calc in different user although i changed the user for the apache service to Administrator and i verify the user using
exec("whoami");
where is the problem?
Environment path for CMD and php shell might not be the same.
You either have to give entire path of the file, or export the path of chrome.exe in php first
Also, I believe that chrome.exe opening a page requires XServer, php can't open graphical interfaces in shell. These commands are not passed to actual shell as a parent, so php file can't "launch" applications for you.
Please read specifics of the exec function:
PHP exec Reference
Also try adding 2> errors.txt to see what are the errors if any in the execution of the programme.
--
The program needs to know what X server to connect to, and it needs to have permissions to connect to that server. You specify the X server with the DISPLAY environment variable; this will usually be set automatically if you are running the PHP program from a terminal in
X, or from a GNOME panel or something similar; however, if you are running the PHP script in some other manner, it likely won't know what X server to connect to.
X has various ways of specifying permission to connect to a server, but the most common one is using a file called ".Xauthority" in the users home directory. Because only the user who is logged in at the X server can read this file, they are the only user who can run GUI programs. So, if you start the PHP user as the same user who is logged in at the X server, you shouldn't have any problem with permissions. However, if the PHP program is running as a different user, you will have to give that user permission to access the X server.
Reference: http://bytes.com/topic/php/answers/838364-cant-launch-graphical-apps-php-exec-ubuntu-8-04-system
(I know that link is for linux and won't have exact same solution for Windows, but exec() still needs to know which X interface to refer to)
Stop Apache running as a service.
When windows runs a service it it is not running directly as the user that started the server or manages due to this it could well be starting chrome in a service environment so you wont see it load on your desktop there are 2 ways to get around this
Stop apache service browse to your apache directory and run httpd.exe manualy then try your script it should work or if it is not required to be running though a web request so it not using anything from the browser you can allow it to work with c:\wamp\php\php.exe yourfile.php (your php path should be replaced for c:\wamp\php)
Try PHP script?
<?php shell_exec('notepad.exe');?>
It's working.