PHP下IIS假死怎么解决?

PHP下IIS假死怎么解决?,第1张

不太清楚.~

我也是用IIS挂的 不过方法不一样 .~ 我的方法如下.~

虽然 LAMP 组合很不错,但是如果想要架设一台同时支持PHP、ASP、ASP.NET、JSP、Perl的Web虚拟主机服务配滚器,还是用 Windows 2003的IIS 6最好。网上有很多介绍在IIS 6上配置PHP的文章,但是那些方法不是性能不好,就是升级麻烦。下面的方法可以让你在第一次配置指卖蚂好后,能够非常方便的进行升级。

这里所说的升级,是指从某个php4版本升级到另一个php4版本,或者从某个php5版本唯埋升级到另一个php5版本,而不是指从php4升级到php5。

准备:

1、一台安装好的 Windows 2003 服务器,并且已经安装了 IIS 6。

2、下载 windows 版的 PHP 二进制压缩包

安装:

解压缩 PHP 二进制压缩包到 C:\php 目录下(这里假设 C: 盘是系统盘,即安装了Windows 系统的盘,如果系统盘是 D: 盘,则解压缩到 D:\php 目录下,以此类推,下同)。

然后打开“我的电脑”->“属性”->“高级”->“环境变量”->“系统变量”->“path”,编辑其值,在前面增加下面的路径地址:

C:\phpC:\php\dllsC:\php\extensionsC:\php\sapi

将 php.ini-dist 或 php.ini-recommended 复制到 C:\Windows 目录下,并改名为 php.ini,一般正式发布网站的服务器用 php.ini-dist,而作为调试用的服务器用 php.ini-recommended 更好。当然一般情况下,这个 php.ini 还是需要根据实际情况来修改的。

下面来介绍一下几个必要的修改选项:

extension_dir = "C:\php\extensions"

这个是 PHP 扩展所放置的目录,请确保跟你实际安装的目录相同。

extension=php_mbstring.dll

extension=php_big_int.dll

extension=php_bz2.dll

extension=php_cpdf.dll

extension=php_crack.dll

extension=php_curl.dll

extension=php_db.dll

extension=php_dba.dll

extension=php_dbase.dll

extension=php_dbx.dll

extension=php_domxml.dll

extension=php_exif.dll

extension=php_fdf.dll

extension=php_filepro.dll

extension=php_gd2.dll

extension=php_gettext.dll

extension=php_hyperwave.dll

extension=php_iconv.dll

extension=php_ifx.dll

extension=php_iisfunc.dll

extension=php_imap.dll

extension=php_interbase.dll

extension=php_java.dll

extension=php_ldap.dll

extension=php_mcrypt.dll

extension=php_mhash.dll

extension=php_mime_magic.dll

extension=php_ming.dll

extension=php_mssql.dll

extension=php_msql.dll

extension=php_oci8.dll

extension=php_openssl.dll

extension=php_oracle.dll

extension=php_pdf.dll

extension=php_pgsql.dll

extension=php_printer.dll

extension=php_shmop.dll

extension=php_snmp.dll

extension=php_sockets.dll

extension=php_sybase_ct.dll

extension=php_w32api.dll

extension=php_xmlrpc.dll

extension=php_xslt.dll

extension=php_yaz.dll

extension=php_zip.dll

上面这些,开头没有加分号的是打开的扩展,加了分号的是没有打开的扩展。上面的设置包含了在 Windows 2003 上默认安装情况下可以打开所有扩展(这里列出的是 php 4 的)。

[NextPage]

session.save_path = c:\sessions

这个是 session 文件默认保存的目录,这个目录必须是一个存在的目录,不然默认的 session 功能会无效。我这里设置的是一个 ramdisk 上的一个目录。将 session.save_path 设置在 ramdisk 上可以加快 session 处理的速度。如果你没有安装 ramdisk,你可以把它指定到其他盘的任何一个目录下,如 C:\sessions 目录、C:\Windows\Temp 目录等。

OK,基本工作作完了,现在该配置 IIS 了。

打开“ Internet 信息服务(IIS)管理器”,在“ Web 服务扩展”里,选择“添加一个新的 Web 服务扩展”,扩展名可填写“PHP ISAPI 扩展”,要求的文件选择:C:\php\sapi\php4isapi.dll(如果安装的是 PHP5,则此处是 C:\php\sapi\php5isapi.dll,下同),并设置扩展状态为允许。

打开“网站”->“属性”->“ISAPI 筛选器”->“添加”,筛选器名称可填写“PHP”,可执行文件仍然选择 C:\php\sapi\php4isapi.dll。

打开“网站”->“属性”->“主目录”->“应用程序设置”->“配置”->“应用程序扩展”->“添加”,可执行文件还是选择 C:\php\sapi\php4isapi.dll。扩展名填写“.php”,动作限制为“HEAD,GET,POST”。

打开“网站”->“属性”->“文档”->“启用默认内容文档”->“添加”,可以将 index.php 添加为默认内容文档。

然后选择“服务器机器名”->“所有任务”->“重新启动 IIS”来重启 IIS。

测试

在默认网站发布目录下,建立一个测试页面:

下载:phptest.php

phpinfo()

?>

如果打开这个页面能够看到 php 安装配置信息,就算是安装成功了。

如果想要更优化的执行 php 程序,可以安装 ZendOptimizer-2.6.0-Windows-i386.exe ,这个东西安装非常简单,这里就不介绍了。

升级

现在升级就非常简单了。只需要将新版本的 PHP 二进制压缩包下载下来,将原来的 C:\php 目录删除,将新版本解压缩到 C:\php 目录中,然后重新启动一下 IIS 就可以了。不需要修改任何配置,也不需要往 System32 目录中复制任何文件。是不是很方便啊?

祝你成功.~

首先赞扬一下楼主的提问方式:

1. 对问题描述得很清晰;

2. 给出了匹配的范例文本;

3. 指定了正则式所在的语言。

这才应该是规范合理的提问。

言归正传,先根据问题,写出正则,然后落实到PHP语言。如果对分析过程不感兴趣,请直接pagedown看答案。

1. 基础

需要匹配的关键词为:test,你好,程序,分类。

正则表达式:/test|你好|程序|分类/i

(i是表示大小写不敏感模式。如果指定匹配小写的test,则可以去掉i)

2. 限制条件

a. 不在标签内部,例如<img src=asdasda.jpg alt="test" title="你好">,里面虽然有test和你好,但这不满足要求;

b. 本身无链接。例如,<a href="link1" alt="程序设计">程序设计</a>中,>程序设计<中的程序由于处于<a..>程序设计</a>之间,同样不满足要求。

根据以上限制,写出纯粹的正则式(并不能直接用在php中):

(?<!<缓陆闷(?:a|img)[^<>]*)(test|你好|程序|分类)(?![^<>]*</a>)

它表示,(test|你好|程序|分类)的紧临左侧不能出现<a..标签,或者扰弯<img标签;紧临右侧不能出现</a>标签。

“紧临”二字至关重要,它将无直接关系的<>都忽略掉,才确保条件的正确执行。怎样实现这一点呢?我使用的是[^<>]*。

正则式的部分这里就交待清楚了。下面将正则式应用到PHP中。

3. php正则式

php使用的正则表达式是PCRE的,它不支持在lookbehind里使用无限量词,即(?<!<(?:a|img)[^<>]*)部分不被PCRE支持。没关系,可以修改之。

(?<!(?:<a|<img))([^<>]*)(test|你好|程序|分类)(?![^<>]*(?:>|</a>))

与2中的正则式相比,前者$1即为所求,其余部分只匹配,不消耗字符;而后者$2为所求,还需要对$1进行处理。

4. php细节

我使用preg_replace_callback函数,以便自定义替换过程。代码如下,随手注释:

<?php

//此处使用heredoc语法,以便支持复杂的长文本。

$x=<<<EOT

请从以下推荐分类中选择合适的分类:<br>电脑/网络 -><a href="link1" alt="程序设计">程序设计</a><br>

电脑/网络 -> *** 作系统/系统故障<br>

<br>

如果没有合适的推荐分类,建议您更改分类,有助于获得准确解答 <br>

<img src=asdasda.jpg alt="test" title="你好"><br>

您还可以输入1381字<br>

test<br>

输入内容已经达到长度限制<br>

EOT

//关键词数组

$a=array(

1 =>"test",

2 =>"你好",

3 =>"程序" ,

4 =>"分类"

)

//记号数组,用于记录哪些匹配是已经替换了的。因为楼主指定“每个词只匹配一次”。

$index=array()

function compute_replacement($groups) {

global $a

global $index

if ($index[$groups[2]])

{

//如果该关键词已经被处理过,那么直接返回整个字串($groups[0]),不作处理。

return $groups[0]

}

//查询该关键词在数组中的位置,确定序号,以便生成href="1.html"之类链接地址。

$in=array_search($groups[2],$a)

//将处理过的关键词标记为已处理,避免重复。

$index[$groups[2]]=1

//返回处理好的文本。

return "$groups[1]<a href=\"$in.html\" title=\"$groups[2]\">$groups[2]</a>"

}

$r= preg_replace_callback('%(?<!<)([^<>]*)(test|你好|程序|分类)(?![^<>]*(?:>|</a>))%s', compute_replacement, $x)

echo $r

?>

输出的结果为:

请从以下推荐分类中选择合适的<a href="4.html" title="分类">分类</a>:<br>电脑/网络 -><a href="link1" alt="程序设计">程序设计</a>悉租<br>

电脑/网络 -> *** 作系统/系统故障<br>

<br>

如果没有合适的推荐分类,建议您更改分类,有助于获得准确解答 <br>

<img src="asdasda.jpg" alt="test" title="你好"><br>

您还可以输入1381字<br>

<a href="1.html" title="test">test</a><br>

输入内容已经达到长度限制<br></body>

注:这里的格式不好,建议去“参考资料”所指向的地址察看更易读版本的解答。

正则表达式论坛:

正则表达式博客:

附:匹配图。高亮部分为匹配结果。

你的代码中有两处明显的错误,第一个就是date函数的困尺使用,如果想date函数返回当前时间,可以使用date("Y-m-d h:i a"),即可以满足你要求的格式,第二处错误就是[ap]m,这种写法是不对的,你想两个选一的话,可以使用[a|p]m,改正后便可正确运行,以下为稍加更改的代码

<?php

$content="current date and time is".date("Y-m-d h:i a").",we are learning php together."

echo preg_match("/\d{4}-\d{2}-\d{2} \高尺拍d{2}:\d{2} [a|p]m/",$content,$m)

if(preg_match("/\d{4}-\d{2}-\d{2} \d{2}:\d{2} [a|p]m/",$content,$m))

{

echo "匹配的时间是:".$m[0]."\n"戚羡

}

?>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12323266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存