I have a PHP script that runs one command. The command needs to be runned as administrator. If I run Windows console as administrator and execute the command it works perfectly, on the other hand if I run the script from Windows console as administrator using PHP console it works perfectly.
However if I run the PHP script using Apache server on my PC, my page never finish loading and it does not executes the command in rigth way. I have Apache running as a service and I change the user of Apache to administrator.
Do someone sees a problem with the way I´m doing things?
Related
I have a php script that uses a shell_exec to call a shell script, I am using a ajax call to the php script,
In mac os, it does run without any issues, but when I try to run it in my ubuntu vm, it does not do the shell_exec command when called from the ajax, but if I run from the unix console using
php script.php
it does run the shell_exec normally.
Anyone has had this issue before?
The php code is this
<?php
$output = shell_exec('sudo sh /var/www/html/SIRSProject/WebApp/php/teste.sh');
echo $output;
?>
Most probably this is because when called via the web server the command will run as another user compared to when you call it directly on the command line.
Which web server are you using? If you're running apache for example you can see/change the user PHP is run as by the webs server in the User directive; under Ubuntu this www-data.
Another reason may be that sudo ask for a password which can not be provided by PHP. Note here: when running on the terminal sudo may cache the authorization for that terminal session. So maybe also test manually executing the PHP script in a new terminal session.
In both cases you may need to update your /etc/sudoers to allow for non-interactive execution of sudo.
But be aware: THIS IS DANGEROUS!
Calling an external command with sudo from a web server can easily become a huge security risk by allowing to execute commands with root privileges from the web. Only proceed with this if you really know what you are doing - especially never trust the user input!
I have been following this tutorial:
Run Cron Job on PHP Script, on localhost in Windows
The first answer is to set up on wamp... Can anyone tell me what the settings should be to run on Xampp, Windows 8.
PS: when I manualy click on "run" in task scheduler... It runs te desired code (Inserting some data into DB) but not happeneing automatically.
I have a windows 7 Pro computer that is running XAMPP (apache, php).
What I need to do is execute a batch or powershell command on this computer (host) when a remote computer accesses a certain webpage on it. is this possible?
Yes, there is a PHP function that will execute shell code.
Have a look in their documentation
Function: exec("command here");
I'm trying to run notepad on the server (localhost for now).
exec() and system() functions are working fine when for example write ping 127.0.0.1.
But this does not work (working fine if I write the command directly in the command prompt):
$command = "C:\WINDOWS\system32\notepad.exe";
$result = system($command);
print_r($result);
Using Windows XP with xampp. Probably I don't have permissions because the command is executed from some other account but I don't know how to check this.
Any advices?
Edit:
As bwoebi said, I have opened processes but they are opened from a different user (SYSTEM) and I can't see when the application is opened. So, I have to paraphrase my question: how to change the user which is used when executing commands from a PHP script?
First you need to escape the backslashes in your command string if you're not using single quotes :
$command = "C:\\WINDOWS\\system32\\notepad.exe";
Also note that if Apache is running as a Windows service, it does not have desktop interaction permission, so it can't open a GUI, try running the script directly with PHP on the command line.
EDIT
The user used to run command is the user that is running PHP. To change the user running PHP, you'll have to change the user running Apache, if you want this user to have desktop interaction permission, you'll have to run Apache yourself and not as a service.
let the process a bit sleep after executing the shell command and search in the TaskManager for a Notepad... Then you'll see that this are two different users (and you don't see the other users Notepad)
Note pad is a GUI program so requires the windows TTY to be active.
Ping is command line so can be ran by the system directly and piped results into the program calling it.
With out getting into too much detail of how os's work basically it can't be done on a windows machine (its possible on unix machines but more difficult.)
At preset we have need to launch apps on a linux box remotely
To do this we have php script that is run at boot via the rc.local file. This php script watches a command file. This has commands written to it.
The php script has trouble running some apps. For instance it can boot X11, but it can't run an app that is meant for X11.
But, if we run the php script from a terminal, them the system works just just fine
Here is the contents of the rc.local file (this fails).
sudo -u jacob /usr/bin/php /home/listener/ListenerThread.php > /var/www/html/out.txt &
The user jacob as sudo root access with no need for passwords
Please help
Most likely if it's an X11 issue the children aren't having DISPLAY set in their environment, but without error messages we can't help you.
One solution I would suggest is to start X11 at boot and put the line that launches your script into your .xinitrc. This way your script will be able to run GUI programs correctly.
If you don't like that solution, then try running your gui apps from within the script like this: env "DISPLAY=:0.0" your_gui_app