A. php中的正则表达式为什么会和Perl、POSIX扯上关系
一直以来,Perl被视为正则表达式的标准,它提供一种全面的正则表达式语言。php就按这个Perl正则标准来制定的。
在PHP手册里Perl
兼容正则表达式函数的第一句就是这样说的:“本类函数中所使用的模式极其类似
Perl。”
注意是“极其类似”。
Perl和POSIX很多都是相同的,因为Perl是由POSIX派生来的。
所以PHP都可以使用两套正则表达式规则,一是POSIX
1003.2定义的正则;二是PCRE库提供PERL兼容正则。
B. tomcat下,怎么安装配置php (linux系统)
一、安装和系统环境变量设置
1、我使用的PHP为php-5.4.31,不用5.5以上版本的原因是,因为他们都是使用VC11编译的,需要一个DLL,win7及一下都不支持。下载VC9编译的PHP 5.4(5.4.31) for X86的已编译版本。我的安装目录是D:\Application\php-5.4.31,
将安装后的路径设置到系统环境变量path中。
2、perl直接下载安装即可(会自动配置环境变量,不用操心)。
3、Tomcat用的是7.0.41版本。很多文档要求将server/lib下servlets-cgi改名为servlets-cgi.jar。从6版本以后,好像就没有server目录,内部已经自动支持cgi,只需要进行配置即可。
Tomcat需要JDK 1.6以上,所以JDK需要先安装好。
二、配置步骤:
1、到D:\Application\php-5.4.31目录下
将php.ini-development复制一份同一目录下,命名为php.ini
<1>设置extension_dir参数:
extension_dir="D:\Application\php-5.4.31\ext"
<1>设置cgi.force_redirect参数:
cgi.force_redirect = 0
2、打开Tomcat的conf下的context.xml文件
给Context增加属性privileged="true",修改后的Context元素属性如下所示:
<Context privileged="true">
3、打开Tomcat的conf下的web.xml文件
在servlet和servlet-mapping之间增加如下的内容:(注意,注释不能放到配置项里面,否则启动报错)
<!—Add to support PHP & Perl -->
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet>
<servlet-name>php</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>clientInputTimeout</param-name>
<param-value>200</www.gzlij.com param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>D:\Application\php-5.4.31\php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/php-bin</param-value>
</init-param>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/php-bin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
备注:
1、我们配制了两个servlet,分别是php、CGI
2、在servlet参数中
<param-name>executable</param-name>
<param-value>D:\Application\php-5.4.31\php-cgi.exe</param-value>
指向CGI程序执行器,其实就一可被调用的可执行程序。(这里带全路径,好像不带路径也可以,因为path环境变量里已经配置了),记住不要用php.exe。
如果没有配置,缺省就是调用perl执行程序。
3、脚本存放路径
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/cgi-bin</param-value>
这里将perl脚本配置的是指向webapps/web-inf/cgi-bin目录下。
<param-name>cgiPathPrefix</param-name>
<param-value>WEB-INF/php-bin</param-value>
PHP的脚本指向的是webapps/web-inf/php-bin目录下。
4、资源URL路径映射。
这里如果请求的资源是/php-bin/*则,指向php服务程序,如果是/cgi-bin/*则指向cgi服务程序。
<servlet-mapping>
<servlet-name>php</servlet-name>
<url-pattern>/php-bin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi-bin/*</url-pattern>
</servlet-mapping>
三、测试
1、分别将如下的test.php和test.cgi测试程序放到webapps\ROOT\WEB-INF\php-bin和webapps\ROOT\WEB-INF\cgi-bin目录下。
其中test.php内容如下:
<?php phpinfo();?>
Test.cgi内容如下:
# filename: test1.cgi
print "Content-type: text/html\n\n";
print "Hello, world!\n"
2、重新启动tomcat。
浏览器地址栏输入:http://127.0.0.1:8080/php-bin/test.php
如果显示如下,则说明PHP设置正确。
<?php
echo "hello World!\n\n";
echo "hello World!\n\n";
echo "hello World!\n\n";
?>
针对上面的程序,如果配置中使用的是PHP.exe,则只能现实两行“hello world!”, 第一行总是莫名其妙地丢失。而且对php-info()函数,第一行也会丢失。
(很多文档中都提到这个问题,其实就是因为用错了程序。)
浏览器地址栏输入:http://127.0.0.1:8080/cgi-bin/test.cgi
如果显示“hello world!”,则说明cgi设置正确。
C. Perl是什么
发明perl的larry wall就说过:“perl可能不好看或者不好闻,但是它能完成任务”。 perl是文本处理语言,它最初就是为了这个目的设计的。 perl是网络编程语言,它内置了socket/client-server协议。 perl是系统管理语言,全球网络很多服务器上就运行着它的脚本。很多时候是单行的脚本。 perl是web脚本编写语言。至今它仍然是最流行的几种web脚本编写语言之一。 perl还可以: 用perl生成代码 用perl(调用tk)编写gui程序。 在c/c++中进行perl编程,在perl中进行c/c++编程 用perl过滤邮件 用perl数据仓库编程 在web上进行搜索 有人说perl无所不能。 ----------------------------------------------------------------------------------------------------- 我个人觉得perl的文本处理能力是无以替代的。它的正则表达式功能之强大是其他编程语言无法达到的。 即使微软的jscript/vbscript在正则表达式这项功能努力仿照和追赶perl,但仍然有很大的差距。 perl里面的哈希结构也是一个十分有趣的东西,vbscript里面对应的是dictionary,但是dictionary有欠直观。 如果你对照一下perl和php,会发现两者程序之间有很多类似的地方,php在产生的时候受到了perl很多的影响, 说php来源于perl也不为过。 perl甚至和vbscript/jscript一样可以编写asp程序。但同时,perl又不仅仅只有web脚本的功能。。。。但我 们很多web程序员用asp/php/jsp在编写基于web的聊天室,用隐藏桢刷新聊天内容的老土办法的时候,实际perl 写的基于socket的chat server程序早就存在了。你甚至不需要用c/c++来做这些复杂的事情,一个perl一百行 代码就可以做到了。 perl一直以来是一个免费的语言。你不用任何费用就可以获得perl世界里面的代码包括perl本身。perl不是由 某个公司大力推广而得到发展的,正如java那样。perl用它自身的力量来发展自己。当我们发现perl的开发调 试工具就可以用perl来写作,就不能不为它的神奇而感动。perl的世界是一个真正的自由的世界。 更多的时候,我觉得看一下perl,也是有很多地方值得借鉴的。有一些编程的方法就可以学过来,然后放到你所
D. phper、perl和php各是什么意思啊!
简单的说,phper指的是php开发人员,指的是人,而perl和php都是脚本语言,用于编程的。
perl:简而言之,它像C语言一样强大,像awk、sed等脚本描述语言一样方便,被称之为“一种拥有各种语言功能的梦幻脚本语言"。
php:外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”,是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
phper:php程序员的一种别称,取自php编程语言,加英文er作后缀,同时phper也是一本杂志,是由开源社区门户PHPChina与网上一些PHP技术爱好者共同制作的电子刊物,杂志的内容完全由网上的PHPer们积极提供。在发行致辞中,《PHPer》创作组希望,以履行一个交流平台的使命来运作该杂志--“收集用户之所见,回馈用户之所求。”