我在服务器上使用 Ubuntu Server 14.04。我有一个 PHP 文件,其中包含一些我想在启动服务器时运行的脚本/代码。
我想XXXXXX.php
在服务器启动时在登录前而不是登录后运行此文件。
我没有任何桌面,所以请通过终端告诉我这个过程。我想要运行的 PHP 文件在/var/www/XXXXXX.php
文件夹中。
现在我可以做吗?
编辑:我的XXXXXX.php
包含以下代码...
<?php
$externalIp = file_get_contents('http://phihag.de/ip/');
?>
<form action="Iframe.php" method="post" enctype="plain" id="theForm">
<input type="text" name="My_IP" value="<?php echo $externalIp;?>" />
<input type="submit" value="Send" />
</form>
<script type="text/javascript">
window.onload = function() {
var form = document.getElementById("theForm");
form.submit();
}
</script>
答案1
您可能认为解决方案就在眼前,但我认为您需要退后一步。
您需要做的似乎是一种自动注册。这是一个聪明的想法,但是……您当前的方法需要浏览器支持 JavaScript。
我想我会以不同的方式做到这一点。归根结底,您需要做的就是发出浏览器发送的 POST 命令。
这比所有 PHP 和 JavaScript 都容易得多。
- 使用 shell 脚本进行以下操作
- 获取 IP 地址
- 发送 POST 请求填写 IP 地址
- 在启动时完成
答案2
您还可以编辑/etc/rc.local
- 它在启动过程中比 cron 任务运行得更晚。我不得不使用它在重新启动时启动一些 MySQL 内容,因为当 cron 任务启动时 mysql 尚未启动并运行。
编辑:
运行此命令:'sudo nano /etc/rc.local'
像这样添加您的命令...
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#!/bin/bash
/var/www/XXXXXX.php
exit 0
祝你好运! :)
答案3
如果脚本需要在启动时执行一次性任务,我会使用@reboot
cron 任务。在这种情况下,您应该编辑 crontabsudo crontab -e
并添加类似以下行的内容:
@reboot php /var/www/XXXXXX.php
这页提供有关使用 cron 的更多详细信息。
答案4
你可以用 来完成php5-cli
。如果你还没有安装它:
sudo apt-get install php5-cli
然后您可以使用以下命令从命令行运行 php 命令:php5 ./script.php
。
在 php 脚本的第一行添加以下内容:
#!/usr/bin/php5
然后创建脚本的链接并使其在启动时运行:
cd /etc/init.d
sudo ln -s /path/to/your/scriptName.php scriptName
sudo update-rc.d scriptName defaults
sudo update-rc.d scriptName enable