通过命令行执行PHP文件写字符到外部文本 & server端与客户端的当下绝对路径 & PHP的时间设定
来源:互联网 发布:短信拦截软件 编辑:程序博客网 时间:2024/04/20 13:06
被这个问题弄好久,帖子在这里:http://topic.csdn.net/u/20120206/18/48dc82ff-ce7d-4090-9721-ba1a8a9aaaa7.html?27798
另外我想进一步实验这个做法,在PHP里有require和include指令,之前就是因为使用相对路径,没有引用成功。
继续使用帖子中的测试程序,在externalIOTest\下面创建一个conf.php文件:
<?php$Config['Version'] = '0.1.8';?>
在iotest.php内,在首行加入:
require_once('C:\xampp\htdocs\externalIOTest\conf.php');
然后修改写入文件的代码为:
fwrite($fp, date('Y-m-d H:i:s').' V: '.$Config['Version']."\r\n");
测试结果来看,这样做是成功的。
下面做一点点优化,为了增加灵活性(具体讲为可移植性),通过使用变量__FILE__来得到与运行文件同路径的conf.php文件,将:
require_once('C:\xampp\htdocs\externalIOTest\conf.php');
替换为:
require_once(dirname(__FILE__).'\conf.php');
测试通过。同理,将打开log文件返回句柄的代码也修改成:
$fp = fopen(dirname(__FILE__).'\log.txt','a+');
延伸:
到此为止,关于日志功能,已经都具有移植性,可是还有其他的地方:\preview\Amfphp\Services\eDirectoryService.php
与\preview\DBLayer.php
将其原本的成员变量protected $URL = "C:/xampp/htdocs/edir-cms/daily/eDirectory.sdb",修改成通过相对路径获得数据库文件。
首先需要通过PHP的常量__DIR__来获得当前文件的路径:C:\xampp\htdocs\edir-cms\preview\Amfphp\Services\,因为在PHP中,声明类的成员变量时,不可以使用带有函数的表达式赋值,所以我需要一个构造函数来完成这个动作:
function __construct() {$this->DB_FILE = substr(__DIR__, 0, strrpos(__DIR__, 'prev')) . 'daily\\eDirectory.sdb';}
所做的事情即是从__DIR__中,截取‘prev’出现之前的字符,再把这个字符串加上数据库文件的相对路径。
客户端上的绝对路径:
以上的所有讨论都是关于在Server端如何通过PHP的常量得到当下文件的绝对路径,但是在客户端有时也需要在HTML里使用相对于当前文件的文件引用,但如果使用完整的URL来引用,则失去移植性,而在客户端显然不可以使用__FILE__或者__DIR__这一类将返回server本地磁盘的变量。
在\views\menubody.php中,将preview的链接:
<li><a href="<?=dirname($_SERVER["SCRIPT_NAME"])?>/preview/edirectorypreview.html" target="_blank">Preview</a></li>
在\views\page.php中,将首页链接:
<a href="<?=dirname($_SERVER["SCRIPT_NAME"])?>/index.php">.......</a>
//2012-05-17号增补:
目前的使用来看,$_SERVER["SCRIPT_NAME"]并不能够适用所有情况,当一个网站的文件是直接存放在webroot路径下时,即是说直接通过域名访问该网站:localhost——这种情况下$_SERVER["SCRIPT_NAME"]并不能如我们期望那样正确运作。因为文件直接在webroot下,它将只是返回这个文件名,而通过dirname()将得到一个空字符。
其实使用./index即可,它可以在任何情况下正常运作。
//
时间设定
默认来讲,通过date函数输出的时间并不是香港本地时间,所以需要做些修改,找到PHP.ini文件,找到[Date]标签,将下面的date.timezone = "UTC" 改为 date.timezone = "Asia/Hong_Kong"
REFs:
http://www.electrictoolbox.com/correct-php-timezone/
http://www.php.net/manual/en/timezones.asia.php
- 通过命令行执行PHP文件写字符到外部文本 & server端与客户端的当下绝对路径 & PHP的时间设定
- 通过命令行来执行php文件
- PHP下的命令行执行
- php下的命令行执行
- PHP下的命令行执行
- PHP下的命令行执行
- 命令行下传递参数执行PHP文件
- 命令行下执行PHP脚本
- 命令行下执行php脚本
- 命令行执行php文件,传参
- php获得可靠的精准的当前时间 ( 通过授时服务器 )
- PHP获取文件的绝对路径
- 通过预先设定的系统时间来自动取走自动生成的文件到指定的目录下!!!
- linux命令行下执行 ZendFramework 框架下的php代码
- 命令行执行php文件面临的文件路径问题
- 文件载入。带盘符的绝对路径 与 './file.php' '../file.php' 'file.php'
- 命令行下 执行 带参数的php脚本 方法
- 用php写每天固定时间要执行的代码
- 运行galde编写的UI程序时报错:libglade-WARNING **: could not find signal handler 'gtk_reset'.
- oracle两种复制记录方式
- filenet 一个问答的地方
- 手机平台开发感想
- Qt creator工程项目移植时因环境变换造成qmake错误的解决方案
- 通过命令行执行PHP文件写字符到外部文本 & server端与客户端的当下绝对路径 & PHP的时间设定
- C++ traits编程方法
- Mysql 的 Cascade/Restrict/No action
- CharacterControllerr的碰撞检测
- CentOS构建自己的发行版
- linux shell 中判断进程存在
- 在编译linux kernel时出现 “make: arm-none-linux-gnueabi-gcc:命令未找到”
- EXT核心API详解(六)-Ext.Fx
- 关于从sql*plus中往数据库插入数据却查询不到的原因