如何在启动时发布http表单?也许通过运行PHP脚本?


1

我在服务器上使用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>

您必须声明您的PHP脚本是应该在启动时(不久)运行一次,还是执行某种永久性任务。同样,尽管不需要Web服务器来运行PHP脚本,但是编写独立的PHP脚本却是很不寻常的。所以第二个问题是,您是否有一个独立的PHP脚本。
运行CMD

@ClassStacker我的问题已被编辑,我只想XXXXXX.php在启动/引导时运行我的文件一次……
Muhammad Hassan

Answers:


1

您可能认为解决方案指日可待,但我认为您需要退后一步。

您需要做的似乎是一种自动注册。聪明的主意,但是...您当前的方法将需要支持JavaScript的浏览器。

我想我会做不同的事情。最终,您所要做的就是发出浏览器发送的POST命令。

这比所有PHP和JavaScript都容易得多。


我的想法是,我必须制作一个脚本,在该脚本中必须获取IP,然后将其发送出去curl --data "myIP=XX.XX.XX.XX" http://www.demo.com/Iframe.php,然后在中添加该脚本文件/etc/rc.local。我说对了吗?
穆罕默德·哈桑

@MuhammadHassan绝对。:)
运行CMD

1

您还可以编辑/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

祝好运!:)


我的文件中没有MySQL工作XXXXXX.php。我还在XXXXXX.php上面共享了我的文件代码。您可以查看我的编辑。
穆罕默德·哈桑

是的,/etc/rc.local是正确的机制。
在2014年

@ClassStacker我是Ubuntu的新手,所以您能解释一下如何仅使用终端来运行XXXXXX.php文件的步骤/etc/rc.local吗?
穆罕默德·哈桑

@MuhammadHassan您不应该遵循您的PHP想法。为此,您必须具有启用JavaScript的浏览器和Web服务器安装。请参阅我的答案以获取更精简的方法。
在2014年

@Simon因此,尽管这些代码在我的中/etc/rc.local,它将在XXXXXX.php文件内运行我的HTML,JavaScript,PHP代码,并且还会通过该值发送值method="post"吗?
穆罕默德·哈桑

0

如果脚本在启动时应该执行一次操作,那么我将使用@rebootcron任务。在这种情况下,您应该使用来编辑crontab sudo crontab -e并添加类似以下行的内容:

@reboot php /var/www/XXXXXX.php

页面提供有关使用cron的其他详细信息。


注意:使用@reboot的任务将在cron守护程序启动后立即运行,这可以在脚本可能需要的其他守护程序(例如数据库或SMTP)启动并运行之前发生。
Benoit 2014年

我在@Benoit 这不是一个好建议。
运行CMD

我还必须在XXXXXX.php文件中点击一个网页,以从中获取一些价值,然后必须在该php文件上运行其余代码。我的问题是用XXXXXX.php代码编辑的。
穆罕默德·哈桑

我完全同意@reboot cron任务很早就执行了(因此并非所有事情都可以这样执行)。尽管如此,如果脚本依赖于其他服务,我将使用新贵的工作而不是rc.local解决方案。
user1366204 2014年

0

您可以使用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

1
什么?为什么需要一个Web服务器来执行PHP脚本?
运行CMD

php-cli软件包将提供php解释器。
西尔文·皮诺

我的立场是正确的,不知道php是否有cli。更正了我的答案。
2014年

我想运行XXXXXX.php包含更多语言的整个文件。看到我XXXXXX.php在编辑过的问题中提出的文件...
穆罕默德·哈桑

有趣的是,尽管您在事实层面上错了,但OP的问题实际上不仅需要浏览器,甚至还需要JavaScript。;)
运行CMD
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.