+ -
当前位置:首页 → 问答吧 → php的命令行模式中用命令

php的命令行模式中用命令

时间:2007-10-01

来源:互联网

php的命令行模式中用命令
php -f 文件名
可以在服务器上运行一个php脚本程序.
如果我们要让服务器定时执行一个工作,比如从网上抓取新闻等,我们可以用WINDOWS的计划任务来完成。
1、写好PHP脚本程序,文件扩展名可以不是PHP(任意),PHP命令只认文件内容
2、建立WINDOWS计划任务:
   开始-->控制面板-->任务计划-->添加任务计划
   加应用程序:您的PHP目录下的php.exe
   设置时间和密码(登陆WINDOWS的)
   完成时打开高级属性
3、改“运行”: 盘符:\php\php.exe -f 要执行的脚本文件(要全物理路径)

作者: 逆雪寒   发布时间: 2007-09-30

这个工作在LINUX下是这样工作的
/var/php/bin/php /var/www/index.php tid=2 action=backup
定时操作用crontab -e
这后就不用再动什么手了.

作者: 帅的不能再输啦   发布时间: 2007-09-30

有些意思。
:)

作者: luzhou   发布时间: 2007-10-02

研究下・・・:lol

作者: 疯子-斯   发布时间: 2007-10-02

WIN下按照这个就可以了

已经顺利用到项目上了.

作者: 逆雪寒   发布时间: 2007-10-07

其实,Perl、Python也挺有意思的。
:)

作者: luzhou   发布时间: 2007-10-07

貌似这种做法不可以传递参数。
file.php?a=1&b=2

不知道有人研究过没有?

作者: xiaox   发布时间: 2007-10-07

真是好东西,正在测试ing,我的项目也要用的到这个。

想再请教楼主一下。

如果我在我的网站的服务器上定时运行某php文件,例如说:
C:\PHP\php.exe -f C:\LocalHost\dailyrun.php

那么我怎样才能禁止用户通过 http://www.example.com/dailyrun.php来访问这个文件?

我曾试图通过$_SERVER['REMOTE_ADDR']来进行控制,
当我通过C:\PHP\php.exe -f C:\LocalHost\dailyrun.php来访问的时候,$_SERVER['REMOTE_ADDR']变量是不存在的,它的值是空。
我进行了判断:if($_SERVER['REMOTE_ADDR']),则什么操作都不做,当$_SERVER['REMOTE_ADDR']没有值的时候才执行代码。
但是我又发现,我可以通过unset($_SERVER['REMOTE_ADDR'])把这个值取消掉,绕过了安全检测。。。。

想知道有没有什么其他的更完善的安全检测,能够使得这个文件只可以通过服务器的计划任务执行,而不能通过网站访问执行呢?

作者: BillyFan   发布时间: 2007-10-16

WIN下按照这个就可以了

已经顺利用到项目上了.

作者: hotelcn2007   发布时间: 2007-10-16

引用:
原帖由 BillyFan 于 2007-10-16 18:12 发表
真是好东西,正在测试ing,我的项目也要用的到这个。

想再请教楼主一下。

如果我在我的网站的服务器上定时运行某php文件,例如说:
C:\PHP\php.exe -f C:\LocalHost\dailyrun.php

那么我怎样才能禁止 ...
楼主不都已经说了。他是不看文件的扩展名的。只看文件的内容


那你可以把他给改一个别的什么扩展名呀!这样不就可以了。

作者: freshcn   发布时间: 2007-10-25

我也想过这样的解决方法
于是试验了用其他的扩展名
把dailyrun.php改成dailyrun.xxx,
当用户通过http://www.example.com/dailyrun.xxx访问的时候,真的不解析php了,
但是客户端直接显示了dailyrun.xxx里的原代码,更加不安全。。。。。。。。

后来自己找到了一个变相的解决方案,:

在服务器端运行的时候加上一个附加参数,当作执行密码来用,例如:
C:\PHP\php.exe -f C:\LocalHost\dailyrun.php xiaomifeng

那么在dailyrun.php里面用:
复制PHP内容到剪贴板
PHP代码:
if ($argv[1] === 'xiaomifeng'){
  执行代码;
}
else{
  echo '你没有权限';
}

作者: BillyFan   发布时间: 2007-10-25

我以前做个一个要用倒mssql的扩张好像不行,最后解决方法,让台linux的机器每天定时wget那个页面。

作者: morsth   发布时间: 2007-10-25