首页 Soft PlugIn RAN乱 Dev开发 Info资料 English WAP 留言 登陆 注册
-
Posted by Yippee | 评论(0) | 引用(0) | 阅读2926次
PHP 调用 外部命令 TAR

在PHP中调用外部命令,可以用如下三种方法来实现:

1) 用PHP提供的专门函数

PHP提供共了3个专门的执行外部命令的函数:system(),exec(),passthru()。

system()

原型:string system (string command [, int return_var])

system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。
exec()

原型:string exec (string command [, string array [, int return_var]])
passthru()

原型:void passthru (string command [, int return_var])

2) 用popen()函数打开进程

上面的方法只能简单地执行命令,却不能与命令交互。但有些时候必须向命令输入一些东西,如在增加Linux的系统用户时,要调用su来把当前用户换到root才行,而su命令必须要在命令行上输入root的密码。这种情况下,用上面提到的方法显然是不行的。

popen()函数打开一个进程管道来执行给定的命令,返回一个文件句柄。既然返回的是一个文件句柄,那么就可以对它读和写了。在PHP3中,对这种句柄只能做单一的操作模式,要么写,要么读;从PHP4开始,可以同时读和写了。除非这个句柄是以一种模式(读或写)打开的,否则必须调用pclose()函数来关闭它。

例子1:

<?
$fp=popen("/bin/ls -l", "r");
?> 

例子2(本例来自PHP中国联盟网站http://www.phpx.com/show.php?d=col&i=51):

<?
/* PHP中如何增加一个系统用户
下面是一段例程,增加一个名字为james的用户,
root密码是 verygood。仅供参考
*/
$sucommand = "su --login root --command";
$useradd = "useradd ";
$rootpasswd = "verygood";
$user = "james";
$user_add = sprintf("%s \"%s %s\"",$sucommand,$useradd,$user);
$fp = at popen($user_add,"w");
@fputs($fp,$rootpasswd);
@pclose($fp);
?> 
tar

tar 原字義是指"深色的焦油",一般也稱為瀝青或柏油。tar 原作者 Chuck Haley 用這個字來代表程式的功能,也就是將檔案粘在一起的意思。

在 Linux 中, tar 指令通常採用的是 GNU 撰寫的版本。使用的語法並必不特別但卻有一個特色,她能以選項的方式直接呼叫壓縮解壓縮程式,如 gzip(-z) 以及 compress(-Z)。這點倒提供了較合理的使用。因為原始的 tar 指令並沒有提供壓縮的功能。

如果列出 tar 全部的功能選項,是很壯觀的。因為 tar 是一個思考慎密的程式。對於檔案的製作、比對、新增、特殊保留項目、檢查、展開等動作都有功能選項,同時還針對以上狀況的例外做了特定額外的選項,所以第一次看她 on-line manual 的人,通常都會嚇一跳。其實在單機一般狀況下用的選項只要幾個就足以應付了。

常用功能選項

-c 製作 tar 檔案;create a new archive

-x 還原 tar 檔案;extract files from an archive

-t 顯示 tar 檔案的內容;list the contact of an archive

-v 顯示指令運作過程資訊;verbosely list files processed

-f 包含指定目錄下的子目錄以及所有檔案;

-z 呼叫 gzip 壓縮(製作檔案時)或解壓縮(還原檔案時)。

實例

# tar cvfz Ak2k202 dot tar.gz /home/html

以上是將 /home/html 目錄之下的所有資料壓縮轉存成 Ak2k202.tar.gz 檔案。

# tar xvfz game.tar.gz

將 game.tar.gz 檔案,解壓縮、解 tar 到在現在的目錄中。

# tar tvfz Ak2k201.tar.gz

顯示 Ak2k201.tar.gz 檔案的內容,

想调用外部命令 CRONTAB 创建定时备份,结果总是返回空白页~~~~

crontab是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-uuser是指设定指定user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。如果不使用-uuser的话,就是表示设定自己的时程表。

如果PHP执行出现空白页面,一般有可能是PHP设置为安全模式,限制了某些函数或者程序的运行


字体:

Permanant URI永久地址 http://www.shengfang.org/blog/p/phpsystemexectar.php
Trackback URI引用地址 http://www.shengfang.org/blog/tb.php?tb_id=1131342081

2005年11月7日13:41星期一  [Info资料] 追踪此文的RSS
提示:
此文还没有评论。

称呼:    登陆   注册
   不注册,但记住我的信息
邮件:
(非必须)
评论: [UBB代码帮助]
粗体 斜体 下划线 链接 水平线 引用



验证码: 请输入你看见的数字
关闭UBB      提交时自动将内容复制到剪贴板

公告
Fire and Motion!

统计信息
[Yippee]||[统计]||日志:1790
在线: 12||用户: 2563 [列表]
今日:582||到访:2682221
Rss:841941||评论:1585

最新日志

最新评论

友情链接

日历

最新引用

搜索

归档

杂项
Get RSS Feed (Version 2.0)
Get Atom Feed (Version 0.3)
编码:  UTF-8