PHP做Shell语言
2024年02月28日
PHP(Personal Hypertext Preprocessor)近一两年来似乎已经成为Linux/Unix上最广泛使用的网页处理语言,方便、功能强大与源代码开放(OpenSource)的特性使其正逐步发展占领传统的CGI,甚至是MicroSoft ASP(Active Server Page)的市场,很多网站站点都用PHP做动态网页处理。究其原因,可以总结如下:
PHP是开源的软件,基于GPL协议,源代码开放,免费使用,免费发放,这样吸引了大量的人使用,同时也获得了商业公司的支持,特别是在PHP4中,zend为PHP提供了引擎和优化部分,您可以访问http://www.php。net或http://www.zend.com,可以得到更多的信息
。PHP本身的语法非常的简单,和C、Perl语言有很大的相似。当我第一次接触PHP时,感觉它简直是Perl的克隆。PHP本身非常简单易懂,同时提供面向对象的处理能力,让新手在最短的时间内论证。PHP提供了非常丰富的功能,包括
数学处理、字符串处理、网络相关功能、各种数据库的支持、图像处理功能。很多人为PHP的发展提供了回顾的新功能,它的扩容性非常好。目前,PHP对Flash提供了很好的支持。PHP很容易与
Apache相结合,可以作为Apache的模组来使用,同时,在Apache中设置安装相当简单,也因为Apache目前已经抢占了Web Server全球60%的市场,PHP自然而然成为Apache搭配的最佳。同时为了提高web服务器的
PHP的另外一个功能是:它实际上是可以作为shell脚本来应用的。PHP作为shell脚本比其他的shell语言有很多很大的优势。尤其PHP的数据库的服务功能非常的强大,可以方便用户的访问数据库系统。
编译PHP用来做解释器,本文的下面的操作环境是HappyLinux家庭版V1.0,以root身份执行的步骤:
获取PHP的源代码
PHP的源代码在http://www.php.net的网站上可以获取,同时国内的很多网站上都提供改网站的镜像。目前,最新的版本是PHP 4.0。2。
解开PHP源码包
tar zxvf php-4.0.2.tar.gz
编译PHP
cd php-4.0.2
configure--with-ftp--with-pgsql
make
注意配置的参数看PHP的帮助文件,方便你能够更好的完成PHP的配置。
当编译后,在php-4.0.2目录下会生成一个php的文件,将该文件拷贝到/usr/sbin/
cp./php/usr/sbin
测试编译的结果
输入下面的结果到文件test.php中:
#!/usr/sbin/php
<?php
echo"Hello World!\n"
?>
保存结果到文件test.php中并更改文件的属性:
chmod 777./test.php
执行文件test.php
./test.php
其次你能够看到结果:
X-Powered-By:PHP/4.0.2
Content-type:text/html
Hello World!
这个结果你可能有些失望,它不是我们想要的全部结果。因为,PHP主要是做网页的应用,上面的头两行是输出的HPPT的头,怎样让PHP去掉这行呢?你只需在加入参数-q就可以去掉HPPT头:
#!/usr/sbin/php-q
<?php
echo“Hello World!\n”
?>
再看一下输出的结果:
Hello World!
OK!搞定。下面用PHP做脚本讲述了一些应用
PHP连接数据库
PHP提供大量数据库的函数,几乎所有的数据库PHP提供了一组数据库的函数,所以用PHP写脚本,访问数据库是一个很好的主意下面的例子是用PHP访问postgresql数据库的一个例子:
#!/usr/sbin/php-q
<?php
string=$con=pg_Connect("dbname=test port=5432 host=127.0.0.1 user=postgres\密码=postgres");
回显$con."\n";
pg_exec($con,"插入test1值('ok',1,1)");
pg_close($con);
?>
执行该脚本,PHP访问数据库test,同时,会向test1表中添加一条记录。有关PHP访问数据库的内容请查看相关的数据库函数和数据库文档手册。用PHP做
FTP自动上载和下载
脚本PHP3就提供PHP的FTP的函数,用这些函数能够实现文件的自动上传和下载的功能。想要利用PHP提供的FTP函数,下面必须在编译PHP时的configure指定参--with-ftp。是FTP的例子:
#!/usr/sbin/php-q
<?php
//设置基本连接
$conn_id=ftp_connect("$your_ftp_server");
//使用用户名和密码登录
$login_result=ftp_login($conn_id,"$ftp_your_name","$ftp_your_password");
//检查连接
if((!$conn_id)||(!$login_result)){
echo"Ftp连接失败!";
echo"尝试连接到$your_ftp_server";
死;
}else{
echo"已连接到$ftp_server,为您服务";
}
//上传文件
$upload=ftp_put($conn_id,"$destination_file","$source_file",FTP_BINARY);
//检查上传状态
if(!$upload){
echo"Ftp上传失败!";
}else{
echo"已将$source_file作为$destination_file上传到$your_ftp_server";
}
//关闭FTP流
ftp_quit($conn_id);
?>
显然利用PHP可以方便的进行网络的文件传输,无需编写socket程序。
用PHP处理命令行参数
PHP和Perl的相似之处还在于它们处理参数的方法是一致的,它们提供了数据仓库和变量元素:$argv[],$argc。下面的例子是一个打印命令行字串的例子和命令行求和。
test.php
#!/usr/sbin/php–q
<?php
echo$argv[1];//注意$argv[]的第一个变量从1开始
?>
在命令行下执行:./test.php LegendSoftware
将打印LegendSoftware
test1.php
#!/usr/sbin/php–q
<?php
$sum=0;
对于($i=1;$i<=$argc;$i++)
$sum=$sum+$argv[$i];
回显$总和;
?>
执行test1.php 1 2 3 4 5回车,屁股打印出15。
在Console下进行交易的
C程序员在Console下进行交易知道用scanf函数,PHP是为web而设计的语言,用户输入交互通过form中的变量。那么在Console下怎么进行交互呢?答案很简单,用fopen函数打开系统的标准输入设备进行读取下面的程序实现了这个从标准输入设备上读取字串的功能:
#!/usr/sbin/php-q
<?
$fp=fopen("/dev/stdin","r");
echo“请输入字符串:”
$inputstr=fgets($fp,100);
fclose($fp);
echo"这个字符串是";
echo$inputstr.”\n”;
?>
其中的fgets($fp,100)是指从$fp句柄(粗糙"/dev/stdin")中读出最多100个字节,执行这个程序会等待我们的输入,当我们输入完点击回车之后,程序把我们的输入打印出来。
小结
通过上面的介绍,和本人的实践经验,PHP的功能非常强大,不仅对web的处理能力非常强大,同时对脚本的处理能力也非常强大非常的方便。