我在HTML中有一组[on / off]按钮,在其中我使用PHP对按下的按钮做出反应。 [On]按钮应该在crontab中添加一行。 [关闭]按钮应删除特定crontab用户的所有条目。
问题:
无法从index.php编辑crontab。
有效的方法:
如果直接从终端发送“ add”和“ remove”脚本,则它们可以工作。这两个按钮都会做出反应,并可以从每个if语句中打印出第一条回声线。
问题的澄清:
为什么index.php无法触发其他php脚本?
Index.php
<!-- Form -->
<form method="post">
<input id="button_on" type="submit" name="button_on" value="on">
<input id="button_off" type="submit" name="button_off" value="off">
</form>
<?php
/**
* Button logics.
*/
// Coalesce operator. If input is none, add 0.
$button_on = $_POST["button_on"] ?? 0;
$button_off = $_POST["button_off"] ?? 0;
if(!$button_on == 0) {
echo "Button [on] pressed!"; // Verify react on button.
$output2 = shell_exec('php 1_add_crontab_lines.php');
echo $output2;
}
if(!$button_off == 0) {
echo "Button [off] pressed!"; // Verify react on button.
$output3 = shell_exec('php 2_delete_crontab_lines.php');
echo $output3;
}
?>
<!-- For troubleshooting. -->
<pre>
---------------------------------
Content of [$_POST]
---------------------------------
<?php print_r($_POST) ?>
1_add_crontab_lines.php
<?php
$cronjob = "* * * * *";
$output1 = shell_exec('crontab -l');
file_put_contents('crontab.txt', $output1 . $cronjob.PHP_EOL);
echo exec('crontab -u trader crontab.txt');
2_delete_crontab_lines.php
<?php
echo exec('crontab -r');