Open batch file php

Your theory is correct, it will run on the server however you may have issues running applications directly from php (with this method afaik it does not detach from the PHP, and the webapp "hangs" while the application is running).

Make sure: return values are printed / logged. Just an

<?php
  if(isset($_POST['startServer'])){
   echo exec('batch/startServer.bat');
  }
?>

Could point you to the right direction. The exec function may have been disabled in your distribution.

Using

<?php

instead of

<? 

is highly advised, by default short_tags are not enabled in most distributions (wamp, xamp, etc).

Set debug mode and print everything to get information about the problem:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

if(isset($_POST['startServer'])){
   echo exec('batch/startServer.bat');
}
?>

If you don't have any response, try a simple batch file with a "hello world" to test if it works.

Be aware, the rights and limitations are comes from the php environment, the batch file inherits the same rights running the PHP code / Apache (in case of mod_php)


In php manual about exec function, there is a note :

Note: If a program is started with this function, in order for it to continue running in the background, the output of the program must be redirected to a file or another output stream. Failing to do so will cause PHP to hang until the execution of the program ends.

I think "hangs like the application is loading" is your application waiting for the bat file terminated / closed to get the output result

Let's try another approach, i found it here, the concept is to create a scheduler that execute the program you want and call it using command.

hope this help :

shell_exec('SCHTASKS /F /Create /TN _notepad /TR "notepad.exe" /SC DAILY /RU INTERACTIVE');
shell_exec('SCHTASKS /RUN /TN "_notepad"');
shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');

If this doesn't work

Check whether you have declared safe_mode = Off inside php.ini