我在我的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的形式运行。