微慑信息网

apache+php TS(threatSafe) 版本の测试php5后缀解析 | vulsee.com

这几天测试一个cms,刚好想测试下apache下通过修改.htaccess来达到任意后缀解析为php的点;

由于使用的phpstudy,在测试的时候遇到一些问题,

(1)由于phpstudy都是nts版本,即是no threat safe 非线程安全,

查了下相关资料,配置apache .htaccess需要在线程安全下,即需要php的nt版本,在phpstudy2014下的nt版本测试是ok的:

在ts版本下只需要配置.htaccess为

<FilesMatch ".php5">
	SetHandler application/x-httpd-php
</FilesMatch>

或者

AddHandler application/x-httpd-php .php5

httpd.conf中默认配置:

LoadModule rewrite_module modules/mod_rewrite.so

即可

(2)phpstudy2014中php版本过低,无法运行目标程序;只能下载ts版本加载到phpstudy8.0中:

ts版本下载:

https://windows.php.net/download

这边下载php 7.3.33

下载后解压放入phpstudy_pro\Extensions\php\目录下:

同时在phpstudy的设置中能刷新看到7.3.33ts即可:

另外,默认没有php.ini,根据自身需要将php.ini-production或者php.ini-development 修改为php.ini,并修改其中两处:

extension_dir = "D:\phpstudy_pro\Extensions\php\php7.3.33ts\ext"
session.save_path = "D:\phpstudy_pro\Extensions\tmp\tmp"

在站点管理中,选择php版本即可看到:

此时还未结束,配置线程安全还需要配置httpd.conf文件中,添加:

PHPIniDir "D:\phpstudy_pro\Extensions\php\php7.3.33ts"
AddHandler application/x-httpd-php .php .phar
LoadModule php7_module  "D:\phpstudy_pro\Extensions\php\php7.3.33ts\php7apache2_4.dll"

注:该处dll为php7apache2_4,故在设置LoadModule名称时,需设置为php7_module

目前线程安全设置完成,只需在.htaccess中配置:

AddHandler php7-script .php5

需要注意的是,在php7版本环境中,需要设置php7-script,而非php5-script

即可:

 

OVER

 

拓展阅读(点评/知识):

参考:https://www.cnblogs.com/52fhy/p/5001733.html

Thread safe(线程安全)是运行在Apache上以模块的PHP上,如果你以CGI的模式运行PHP,请选择非线程安全模式(non-thread safe)。

1. VC6与VC9的区别:
VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。
VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择 VC9版本。
VC9版本是针对IIS服务器的版本,没有对APACHE的支持,而VC6版本对IIS和apache都提供了支持

2.Ts与nts的区别:
Windows版的PHP从版本5.2.1开始有Thread Safe和NoneThread Safe之分。
先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。

nts版本会有_nts后缀。官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe (ts)版本的PHP来使用。
XAMPP在http-xampp.conf中默认配置是使用ISAPI的方式

3.PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择ThreadSafe版本;

而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择NonThread Safe版本。

通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。

apache中的配置方式:

#下面这个是加载TS版本的php必须的
LoadModule php5_module “xxx/php5apache2_2.dll”
#下面这行可有可无

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt
#下面这两行是加载NTS版本的php必须的,不可以直接写成Action application/x-httpd-php “c:/wamp/bin/php/php3.5.6/php-cgi.exe”!
ScriptAlias /php/ "C:/wamp/bin/php/php3.5.6/"
Action application/x-httpd-php “/php/php-cgi.exe”

#另外,还要有之前的AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt,这样才能认识php格式的文件

#这样配置完可能还会因为权限问题而无法用php-cgi.exe解析php网页,所以还要加上下面这段

<Directory "C:/wamp/bin/php/php5.3.6/">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

php版本区分ts和nts,其插件也区分。这点要注意。插件区分php版本(一般是大版本,如5.4,5.5)和ts版本。

例如ts版本插件配置(以php5.4版本为例):


[memcache]
extension=php_memcache.dll

[memcached]
;extension=php_memcached.dll

[mongodb]
extension=php_mongo-1.6.8-5.4-vc9.dll


[Xdebug]
;download_url=http://xdebug.org/download.php
zend_extension="D:\phpsetup\php5.4\ext\php_xdebug-2.3.3-5.4-vc9.dll"
;xdebug.var_display_max_children=128
;xdebug.var_display_max_data=512
xdebug.var_display_max_depth=10
xdebug.max_nesting_level=100

nts版本插件配置:

[memcache]
extension=php_memcache.dll

[mongodb]
extension=php_mongo-1.6.8-5.4-vc9-nts.dll


[Xdebug]
zend_extension="ext/php_xdebug-2.3.3-5.4-vc9-nts.dll"
;xdebug.var_display_max_children=128
;xdebug.var_display_max_data=512
xdebug.var_display_max_depth=10
xdebug.max_nesting_level=100
(本文完)

本文标题:apache+php TS(threatSafe) 版本の测试php5后缀解析 | vulsee.com
本文链接:
(转载请附上本文链接)
https://vulsee.com/archives/vulsee_2021/1122_15708.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » apache+php TS(threatSafe) 版本の测试php5后缀解析 | vulsee.com
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微慑信息网 专注工匠精神

访问我们联系我们