PHP Shell_Exec不通过cronjob执行.sh文件

时间:2015-09-04 04:44:18

标签: php linux bash shell cron

我在我的www页面制作了一个php,根据网页上按下的按钮生成.txt文件。 .txt具有我想要运行的shell的完整路径。我有一个cronjob,每分钟运行一次,读取命令。这是cronjob执行的php文件:

  <?php
  define("CRONFILENAME", "SERVERCOMMAND.txt"); //Will put what the conr job needs to do in there    -- Will always go into the CronJobs DIrectory
  define("SERVERBINPATH", "/home/myuser/server_v2/bin/"); // This is the   path of the java bon server
  define("WEBLINKTOCRON", "http://localhost/CronJobs/");
  define("PATHTOWWW", "/var/www/html/CronJobs/");

  $filename = WEBLINKTOCRON . CRONFILENAME;

  if ($filename != "") { //If the file exist read it and then delete it
    $removeFileLog = exec("rm " . PATHTOWWW . "LastServerQuery.log");
    $file = file_get_contents("$filename");
    $removeFile = exec("rm " . PATHTOWWW . CRONFILENAME);
    $ServerQuery = "Executed Query at: " . date("Y-m-d H:i:s") . "\n";
    $ServerQuery = $ServerQuery . shell_exec("$file");
    file_put_contents(PATHTOWWW . "LastServerQuery.log", $ServerQuery);
  }

  ?>

返回的文件(LastServerQuery.log)具有服务器.sh的输出,并显示正确的信息(服务器已启动)但服务器永远不会启动。

cronjob以sudo crontab -e启动(所以它以root用户身份统计) 我尝试在文件前面添加sh,所以它看起来像$ ServerQuery = $ ServerQuery。 shell_exec(&#34; sh $ file&#34;);但这样做返回的LastServerQuery.log文件为空

另外我注意到当我运行cronjob.php(并通过在www目录中添加文件命令)时,我需要执行CTRL + C以便能够返回我的提示行。

由于

编辑:我被要求提供cron线:这是它 * / 1 * * * * php /home/myuser/server_v2/bin/cronjobs.php 我知道cronjob被执行,因为文件被删除和编辑的PHP也是如此。这也是sudo crontab -e。所以我的有限知识告诉我它以sudo的形式运行。

0 个答案:

没有答案