详情介绍
PHP For Windows是一种新型的 CGI 程序编写语言,易学易用,运行速度快,可以方便快捷地编写出实用程序,本站提供的是non-thread-safe版php7.1.4,非线程安全 下载文件中带有 NTS 与IIS 搭配环境使用,有需要的朋友们欢迎前来下载使用。
PHP7.1.4可同时运行于 Windows,Unix,Linux 平台的Web后台程序,内置了对文件上传,密码认证,Cookies 操作,邮件收发,动态 GIF 生成等功能,PHP 直接为很多数据库提供原本的连接,包括Oracle,Sybase,Postgres,mysql,Informix,Dbase,Solid,access 等,完全支持ODBC接口,用户更换平台时,无需变换 PHP 代码,可即拿即用。
PHP7.1
新特性
1.可为空(Nullable)类型
类型现在允许为空,当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。可以通过在类型前面加上一个问号来使之成为可为空的。
function test(?string $name)
{
var_dump($name);
}
以上例程会输出:
string(5) "tpunt"
NULL
Uncaught Error: Too few arguments to function test(), 0 passed in...
2.Void 函数
在PHP 7 中引入的其他返回值类型的基础上,一个新的返回值类型void被引入。 返回值声明为 void 类型的方法要么干脆省去 return 语句,要么使用一个空的 return 语句。 对于 void 函数来说,null 不是一个合法的返回值。
function swap(&$left, &$right) : void
{
if ($left === $right) {
return;
}
$tmp = $left;
$left = $right;
$right = $tmp;
}
$a = 1;
$b = 2;
var_dump(swap($a, $b), $a, $b);
以上例程会输出:
null
int(2)
int(1)
试图去获取一个 void 方法的返回值会得到 null ,并且不会产生任何警告。这么做的原因是不想影响更高层次的方法。
3.短数组语法 Symmetric array destructuring
短数组语法([])现在可以用于将数组的值赋给一些变量(包括在foreach中)。 这种方式使从数组中提取值变得更为容易。
$data = [
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Fred'],
];
while (['id' => $id, 'name' => $name] = $data) {
// logic here with $id and $name
}
4.类常量可见性
现在起支持设置类常量的可见性。
class ConstDemo
{
const PUBLIC_CONST_A = 1;
public const PUBLIC_CONST_B = 2;
protected const PROTECTED_CONST = 3;
private const PRIVATE_CONST = 4;
}
5.iterable 伪类
现在引入了一个新的被称为iterable的伪类 (与callable类似)。 这可以被用在参数或者返回值类型中,它代表接受数组或者实现了Traversable接口的对象。 至于子类,当用作参数时,子类可以收紧父类的iterable类型到array 或一个实现了Traversable的对象。对于返回值,子类可以拓宽父类的 array或对象返回值类型到iterable。
function iterator(iterable $iter)
{
foreach ($iter as $val) {
//
}
}
6.多异常捕获处理
一个catch语句块现在可以通过管道字符(|)来实现多个异常的捕获。 这对于需要同时处理来自不同类的不同异常时很有用。
try {
// some code
} catch (FirstException | SecondException $e) {
// handle first and second exceptions
} catch (\Exception $e) {
// ...
}
7.list()现在支持键名
现在list()支持在它内部去指定键名。这意味着它可以将任意类型的数组 都赋值给一些变量(与短数组语法类似)
$data = [
['id' => 1, 'name' => 'Tom'],
['id' => 2, 'name' => 'Fred'],
];
while (list('id' => $id, 'name' => $name) = $data) {
// logic here with $id and $name
}
8.支持为负的字符串偏移量
现在所有接偏移量的内置的基于字符串的函数都支持接受负数作为偏移量,包括数组解引用操作符([]).
var_dump("abcdef"[-2]);
var_dump(strpos("aabbcc", "b", -3));
以上例程会输出:
string (1) "e"
int(3)
9.ext/openssl 支持 AEAD
通过给openssl_encrypt()和openssl_decrypt() 添加额外参数,现在支持了AEAD (模式 GCM and CCM)。
通过 Closure::fromCallable() 将callables转为闭包
Closure新增了一个静态方法,用于将callable快速地 转为一个Closure 对象。
class Test
{
public function exposeFunction()
{
return Closure::fromCallable([$this, 'privateFunction']);
}
private function privateFunction($param)
{
var_dump($param);
}
}
$privFunc = (new Test)->exposeFunction();
$privFunc('some value');
以上例程会输出:
string(10) "some value"
1
1
10.异步信号处理 Asynchronous signal handling
A new function called pcntl_async_signals() has been introduced to enable asynchronous signal handling without using ticks (which introduce a lot of overhead).
增加了一个新函数 pcntl_async_signals()来处理异步信号,不需要再使用ticks(它会增加占用资源)
pcntl_async_signals(true); // turn on async signals
pcntl_signal(SIGHUP, function($sig) {
echo "SIGHUP\n";
});
posix_kill(posix_getpid(), SIGHUP);
以上例程会输出:
SIGHUP
11.HTTP/2 服务器推送支持 ext/curl
Support for server push has been added to the CURL extension (requires version 7.46 and above). This can be leveraged through the curl_multi_setopt() function with the new CURLMOPT_PUSHFUNCTION constant. The constants CURL_PUST_OK and CURL_PUSH_DENY have also been added so that the execution of the server push callback can either be approved or denied.
蹩脚英语:
对于服务器推送支持添加到curl扩展(需要7.46及以上版本)。
可以通过用新的CURLMOPT_PUSHFUNCTION常量 让curl_multi_setopt()函数使用。
也增加了常量CURL_PUST_OK和CURL_PUSH_DENY,可以批准或拒绝 服务器推送回调的执行
不兼容性
1.当传递参数过少时将抛出错误
在过去如果我们调用一个用户定义的函数时,提供的参数不足,那么将会产生一个警告(warning)。 现在,这个警告被提升为一个错误异常(Error exception)。这个变更仅对用户定义的函数生效, 并不包含内置函数。例如:
function test($param){}
test();
输出:
Uncaught Error: Too few arguments to function test(), 0 passed in %s on line %d and exactly 1 expected in %s:%d
2.禁止动态调用函数
禁止动态调用函数如下
assert() - with a string as the first argument
compact()
extract()
func_get_args()
func_get_arg()
func_num_args()
get_defined_vars()
mb_parse_str() - with one arg
parse_str() - with one arg
(function () {
'func_num_args'();
})();
输出
Warning: Cannot call func_num_args() dynamically in %s on line %d
3.无效的类,接口,trait名称命名
以下名称不能用于 类,接口或trait 名称命名:
void
iterable
4.Numerical string conversions now respect scientific notation
Integer operations and conversions on numerical strings now respect scientific notation. This also includes the (int) cast operation, and the following functions: intval() (where the base is 10), settype(), decbin(), decoct(), and dechex().
5.mt_rand 算法修复
mt_rand() will now default to using the fixed version of the Mersenne Twister algorithm. If deterministic output from mt_srand() was relied upon, then the MT_RAND_PHP with the ability to preserve the old (incorrect) implementation via an additional optional second parameter to mt_srand().
6.rand() 别名 mt_rand() 和 srand() 别名 mt_srand()
rand() and srand() have now been made aliases to mt_rand() and mt_srand(), respectively. This means that the output for the following functions have changes: rand(), shuffle(), str_shuffle(), and array_rand().
7.Disallow the ASCII delete control character in identifiers
The ASCII delete control character (0x7F) can no longer be used in identifiers that are not quoted.
8.error_log changes with syslog value
If the error_log ini setting is set to syslog, the PHP error levels are mapped to the syslog error levels. This brings finer differentiation in the error logs in contrary to the previous approach where all the errors are logged with the notice level only.
9.在不完整的对象上不再调用析构方法
析构方法在一个不完整的对象(例如在构造方法中抛出一个异常)上将不再会被调用
10.call_user_func()不再支持对传址的函数的调用
call_user_func() 现在在调用一个以引用作为参数的函数时将始终失败。
11.字符串不再支持空索引操作符 The empty index operator is not supported for strings anymore
对字符串使用一个空索引操作符(例如str[]=x)将会抛出一个致命错误, 而不是静默地将其转为一个数组
12.ini配置项移除
下列ini配置项已经被移除:
session.entropy_file
session.entropy_length
session.hash_function
session.hash_bits_per_character
PHP 7.1.x 中废弃的特性
1.ext/mcrypt
mcrypt 扩展已经过时了大约10年,并且用起来很复杂。因此它被废弃并且被 OpenSSL 所取代。 从PHP 7.2起它将被从核心代码中移除并且移到PECL中。
2.mb_ereg_replace()和mb_eregi_replace()的Eval选项
对于mb_ereg_replace()和mb_eregi_replace()的 e模式修饰符现在已被废弃
从 PHP 7.0 升级到 PHP 7.1步骤
在 PHP 7.0 发布一年之后,终于看到 PHP 7.1 稳定版发布,有不少新特性,迫不及待地想尝试一下这个版本。本文是介绍从 PHP 7.0 升级到 PHP 7.1
首先下载源码,我一般都是放在 /usr/local/src 中
[root@lnmp lnmp.cn]# cd /usr/local/src
[root@lnmp src]# wget -c //cn2.php.net/get/php-7.1.0.tar.gz/from/this/mirror -O php-7.1.0.tar.gz
然后解压并进入解压后的源码目录
[root@lnmp src]# tar -zxvf php-7.1.0.tar.gz
[root@lnmp src]# cd php-7.1.0/
安装前要先备份一下 php 7.0 的版本,这很重重重要
[root@lnmp php-7.1.0]# mv /usr/local/php7 /usr/local/php7.0
接下来开始安装了,可以先关闭 php-fpm, 也可以不关闭,其实没有关系。
既然是升级,为了不影响现有网站在升级后的正常运行,那就要做到升级后的 configure 和之前的版本基本一致。这就要把之前安装 PHP 的 configure 找出来,如果你忘记了之前的 configure (应该也没有人去记它吧),其实它就在 phpinfo 里边
[root@lnmp php-7.1.0]# php -i | grep configure
Configure Command => './configure' '--prefix=/usr/local/php7' '--enable-fpm' '--with-fpm-user=nginx' '--with-fpm-group=nginx' '--with-mysqli' '--with-zlib' '--with-curl' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-freetype-dir' '--with-openssl' '--enable-mbstring' '--enable-xml' '--enable-session' '--enable-ftp' '--enable-pdo' '-enable-tokenizer' '--enable-zip'
稍作替换就可以得到想要的 configure 命令了
[root@lnmp php-7.1.0]# php -i | grep configure | sed -e "s/Configure Command => //; s/'//g"
./configure --prefix=/usr/local/php7 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip
[root@lnmp php-7.1.0]#
这个这里要特别提到一下就是,如果之前的 PHP 版本在安装后有用 PECL 或 phpize 新增过扩展的话,如果这些扩展可以加到 configure 里边,尽量加,否则安装后还要重新安装一次这些扩展
开始安装
[root@lnmp php-7.1.0]# ./configure --prefix=/usr/local/php7 --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-mysqli --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip
如果成功的话,可以看到有 Thank you for using PHP. 的字样
接着 make
[root@lnmp php-7.1.0]# make
视机子配置不同,编译可能会要点时间。最后是
[root@lnmp php-7.1.0]# make install
至此,PHP 7.1 已经安装基本完成
[root@lnmp php-7.1.0]# php -v
PHP 7.1.0 (cli) (built: Dec 5 2016 04:09:57) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
[root@lnmp php-7.1.0]#
下面是配置,为了不影响现有网站的运行,这里将沿用 PHP 7.0 的配置,直接从备份的文件夹拷贝过去
[root@lnmp php-7.1.0]# cp /usr/local/php7.0/lib/php.ini /usr/local/php7/lib/php.ini
[root@lnmp php-7.1.0]# cp /usr/local/php7.0/etc/php-fpm.conf /usr/local/php7/etc/php-fpm.conf
[root@lnmp php-7.1.0]# cp /usr/local/php7.0/etc/php-fpm.d/www.conf /usr/local/php7/etc/php-fpm.d/www.conf
之前有特别提到有用 PECL 或 phpize 新增过扩展的话,因为拷贝过来的 php.ini 中已经引入了那些扩展,在这里要重新安装,否则在重启 php-fpm 时会出现类似警报:
Dec 05 04:18:53 localhost.localdomain php-fpm[11533]: [05-Dec-2016 04:18:53] NOTICE: PHP message: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/memcached.so' - /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/memcached.so: cannot open shared object file: No such file or directory in Unknown on line 0
是要重新安装,即便从旧版本中将这些 so 文件拷贝过来也不行,否则会出现不匹配的警告:
Dec 05 05:07:42 localhost.localdomain php-fpm[11672]: [05-Dec-2016 05:07:42] NOTICE: PHP message: PHP Warning: PHP Startup: memcache: Unable to initialize module
如果已经忘记过安装过什么扩展,可以查看 php.ini 或扩展目录:
[root@lnmp no-debug-non-zts-20151012]# /usr/local/php7.0/bin/php-config --extension-dir
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20151012
因为旧版本的文件夹已经改名,这里同样要改成 7.0
[root@lnmp php-7.1.0]# ls /usr/local/php7.0/lib/php/extensions/no-debug-non-zts-20151012
memcache.so memcached.so opcache.a opcache.so pdo_mysql.so
其中 opcache.a opcache.so 是自带的,其他都是新增的。其他扩展之前怎么安装,现在又怎么重新安装一遍吧,这里不再累述。
好了之后重新启动 php-fpm
[root@lnmp php-7.1.0]# systemctl restart php-fpm
查看状态
[root@lnmp php-7.1.0]# systemctl status php-fpm -l
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2016-12-05 05:31:22 UTC; 9s ago
Main PID: 17367 (php-fpm)
CGroup: /system.slice/php-fpm.service
├─17367 php-fpm: master process (/usr/local/php7/etc/php-fpm.conf)
├─17368 php-fpm: pool www
└─17369 php-fpm: pool www
已经正常运行,测试下 phpinfo 页面
友情提示:
Zip [21.33MB]
sha256: c2e1d8d3871bfc5eac59a7297295fc206f31b720cf0188f3f172d1a232469389
下载地址
人气软件
phpstudy vc9-vc14运行库(PHP运行环境包) 免费安装版 64位
WAMP5 v2.1e php运行环境 win32(apache+php)
Windows 7/Vista/2008的IIS自动安装脚本(IIS7.0/7.5)
iis 6.0 for Win2003 64位完整IIS安装包
PHP5 For Windows nts VC11-x86 v5.5.24 官方最新版
PHP For Windows 7.1.4 64位 Thread Safe 官方正式版
AppServ(集成了PHP 6.0 MYSQL 6.0等) v8.6.0 英文安装版 附安装
OpenLDAP for Windows v2.4.40 官方安装免费版(附安装配置教程)
西部数码网站管理助手 V3.1 服务器软件安装工具(Win2008 64位+II
IIS 全自动安装程序 win2000(iis5.0)
相关文章
-
PhpWebStudy(Web服务器和环境管理器) v4.5.1 安装免费版
PhpWebStudy是一个集Web服务器/数据库服务器/PHP环境于一体的GUI应用程序,支持macOS、Windows和Linux,欢迎需要的朋友下载使用...
-
守望简单web服务器 v1.0 绿色免费版
守望小型web服务器是用c语言开发的一款功能强大实用的服务器功能,用于局域网,互相点对点传送文件,建立临时WEB服务器,供大家临时下载文件等,欢迎需要的朋友下载使用...
-
Diafaan SMS Server v4.8.0 Full Edition 完整激活破解版(附安装教程)
Diafaan SMS Server 是一个强大的SMS平台,适用于3G / GSM / CDMA调制解调器,HTTPSMS服务和SMPP帐户。此版本对3G / GSM调制解调器,SMPP帐户或基于HTTP的SMS服务的数量没...
-
phpEnv 专业优雅强大的PHP集成环境 v8.6.0
运行在Windows系统上的绿色的PHP集成环境,集成了Apache、Nginx等Web组件。支持不同PHP版本共存,支持自定义PHP版本,自定义MySQL版本...
-
xampp v8.1.6 for Windows(PHP环境搭建套件) 多国语言绿色版
XAMPP是一个易于安装且包含MySQL、PHP和Perl的建站集成软件包。XAMPP软件操作简单,功能强大,我们只需要在本站下载解压后就可以安装使用...
-
东方通 TongWeb 7.0.4 64位企业版(Linux/Windows系统双安装包)
TongWeb是一个自主、标准、安全的JavaEE应用服务器,通过JavaEE规范兼容性认证,丰富的增值特性功能。作为满足上述需求的中间件平台,广泛地应用于电信、金融、政府、交通...
下载声明
☉ 解压密码:www.jb51.net 就是本站主域名,希望大家看清楚,[ 分享码的获取方法 ]可以参考这篇文章
☉ 推荐使用 [ 迅雷 ] 下载,使用 [ WinRAR v5 ] 以上版本解压本站软件。
☉ 如果这个软件总是不能下载的请在评论中留言,我们会尽快修复,谢谢!
☉ 下载本站资源,如果服务器暂不能下载请过一段时间重试!或者多试试几个下载地址
☉ 如果遇到什么问题,请评论留言,我们定会解决问题,谢谢大家支持!
☉ 本站提供的一些商业软件是供学习研究之用,如用于商业用途,请购买正版。
☉ 本站提供的PHP For Windows 7.1.4 32位 Non Thread Safe 官方正式版资源来源互联网,版权归该下载资源的合法拥有者所有。