Heim >Backend-Entwicklung >PHP-Tutorial >PHP做Shell语言_PHP

PHP做Shell语言_PHP

WBOY
WBOYOriginal
2016-06-01 12:33:111114Durchsuche

联想软件超星空工作室 马洪志

PHP(Personal Hypertext Preprocessor) 近一两年来似乎已经成为Linux/Unix上最广为使用的网页处理语言,方便、功能强大与源代码开放(OpenSource)的特性使得它正逐渐占领传统的CGI,甚至是 MicroSoft ASP(Active Server Page)的市场,很多的web站点用PHP做动态网页处理。

究其原因,可以总结如下:

PHP是OpenSource的软件,基于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直接编译进Apache,提高web服务的访问、处理速度。

PHP的另外的一个功能是:它实际上是可以作为shell script来应用的。PHP作为shell script比其他的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

注意configure的参数看PHP的帮助文件,以便你能更好的配置PHP。


当编译完成后,在php-4.0.2目录下会生成一个php的文件,将这个文件拷贝到/usr/sbin/  

cp ./php /usr/sbin


测试编译的结果  

输入下面的结果到文件test.php中:

#!/usr/sbin/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


echo “Hello World!\n”

?>

再看一下输出的结果:

Hello World!


OK!搞定。下面用PHP做脚本列举一些应用


用PHP连接数据库  

PHP提供大量的数据库的函数,几乎所有的数据库PHP提供一套数据库的函数,所以用PHP写脚本,访问数据库是一个很好的主意。下面的例子是用PHP访问postgresql数据库的一个例子:

#!/usr/sbin/php -q


string=$con=pg_Connect("dbname=test port=5432 host=127.0.0.1 user=postgres\ password=postgres");

echo $con."\n";

pg_exec($con,"insert into test1 values ('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


// set up basic connection

$conn_id = ftp_connect("$your_ftp_server");


// login with username and password

$login_result = ftp_login($conn_id, "$ftp_your_name", "$ftp_your_password");


// check connection

if ((!$conn_id) || (!$login_result)) {

echo "Ftp connection has failed!";

echo "Attempted to connect to $your_ftp_server ";

die;

} else {

echo "Connected to $ftp_server, for your";

}


// upload the file

$upload = ftp_put($conn_id, "$destination_file", "$source_file", FTP_BINARY);


// check upload status

if (!$upload) {

echo "Ftp upload has failed!";

} else {

echo "Uploaded $source_file to $your_ftp_server as $destination_file";

}


// close the FTP stream

ftp_quit($conn_id);

?>

显然利用PHP可以方便的进行网络的文件传输,没有必要写socket程序。


用PHP处理命令行参数  

PHP和Perl的相似之处还在于它们们处理的参数的方法是一致的,它们提供变量数组和变量计数器:$ argv [],$ argc。下面的例子是一个打印命令行字串的例子和命令行求和。

test.php


#!/usr/sbin/php –q  


echo $argv[1]; //注意$ argv []的第一个变量从1开始

?>

在命令行下执行:./test.php LegendSoftware

将打印LegendSoftware


test1.php


#!/usr/sbin/php –q


$sum=0;

for ($i=1;$i
$sum=$sum+$argv[$i];

echo $sum;

?>

执行 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 “Please input a string:”

$inputstr=fgets($fp,100);

fclose($fp);

echo "This string is ";

echo $inputstr.”\n”;

?>  


其中的 fgets($fp,100) 是指从$fp句柄(也就是 "/dev/stdin")中读取出最多100个字节,执行这个程序会等待我们的输入,当我们输入完按下 enter 之后,程序会将我们的输入打印出来。

小结

通过上面的介绍,和本人的实践经验,PHP的功能非常的强大,不但对web的处理能力非常的强大,同时对脚本的处理能力也是非常的方便。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn