WAMPServer 相对于所有其他 WAMP 堆栈选项的最大优势在于它可以支持多个版本的 Apache/MySQL/PHP,并允许您随意在这 3 个版本之间切换,假设编译器和链接之间的基本兼容性(一个当然是在任何时候)。
因此,假设您想使用与 Apache 2.4 兼容的 PHP5.3 版本(例如 5.3.28+),您只需手动将 PHP 版本安装到 WAMPServer2.5 中即可。
如何在 WAMP 环境中手动安装 PHP 的新版本
开始之前
在 Apache 和 PHP 上,您会看到缩写词 VC6、VC9、VC10 或 VC11。这表示用于编译该程序或 dll 的编译器版本。
不幸的是,当涉及到在 WAMPServer 中配置的 Apache 和 PHP 时,您不能将两者混合使用,尽管一些文档表明 VC10 和 VC11 相互兼容,我对此不做任何保证。
所以首先你要弄清楚你现在使用的Apache是用哪个编译器编译的,这样才能得到用同版本编译器编译的PHP。
随着时间的推移,这变得更加复杂,因为新版本的 PHP 没有被编译并与旧版本的编译器链接。 VC6 好像不久前就被丢弃了。因此,如果您想使用新的 PHP,您可能还必须升级您的 Apache 版本,以便您拥有一个至少使用 VC9 编译的版本
PHP 和 Apache 在默认 WAMPServer 安装中的交互方式是 Apache 将 PHP Interpereter 作为 dll (php5apachex_y.dll) 启动,因为这是一个非常密切的关系,即不是通过 TCP 端口进行通信,如 PHP 和 MySQL,所以它们两者都必须使用相同版本的 Microsoft Visual C 编译器进行编译。
来自 WampManager “停止所有服务”。
从HERE 下载您要安装的 PHP 版本,如果它不是当前版本,请从 The Achives 下载
您应该使用线程安全构建。通常 Not Thread Safe 版本有 acronim NTS 而线程安全版本有 TS 或者什么都没有。
您应该下载 ZIP 而不是 .msi
确保它使用与 Apache (VC6 / VC9 / VC10 / VC11) 相同的编译器版本构建,
是的,它是一个雷区。但如果您使用的是 WAMPServer 2.5 或 >,那么您需要 VC11 线程安全版本,但使用 VC9 和 VC10 编译的版本也可以工作。
在 c:\wamp\bin\php\ 下创建一个新文件夹,名称 = 您要安装的版本,例如,创建一个名为 php5.5.11 的文件夹。
现在从包含您最新(和工作)版本的 PHP 的文件夹中复制名为 wampserver.conf 的文件并将其粘贴到您在先前设置中创建的新 PHP 文件夹中。 wamp 服务器需要此文件才能正确识别这是一个有效的 PHP 版本文件夹。该文件包含对包含 PHP 解释器的 dll 文件名称的引用,因此当您激活这个新版本的 PHP 解释器时,可以将正确的文件复制到 Apache 文件夹中。
该文件应如下所示,如果您要从一个非常旧的 PHP 版本迁移,您可能需要从这里向您的文件添加一些新部分。
<?php
$phpConf['phpIniDir'] = '.';
$phpConf['phpExeDir'] = '.';
$phpConf['phpConfFile'] = 'php.ini';
$phpConf['apache']['2.2']['LoadModuleName'] = 'php5_module';
$phpConf['apache']['2.2']['LoadModuleFile'] = 'php5apache2_2.dll';
$phpConf['apache']['2.2']['AddModule'] = '';
$phpConf['apache']['2.4']['LoadModuleName'] = 'php5_module';
$phpConf['apache']['2.4']['LoadModuleFile'] = 'php5apache2_4.dll';
$phpConf['apache']['2.4']['AddModule'] = '';
?>
较新版本的 PHP 即 PHP6.5 及更高版本未编译为与 Apache 2.2 一起使用,因此您应该将文件更改为如下所示
<?php
$phpConf['phpIniDir'] = '.';
$phpConf['phpExeDir'] = '.';
$phpConf['phpConfFile'] = 'php.ini';
$phpConf['apache']['2.4']['LoadModuleName'] = 'php5_module';
$phpConf['apache']['2.4']['LoadModuleFile'] = 'php5apache2_4.dll';
$phpConf['apache']['2.4']['AddModule'] = '';
?>
现在将下载的 PHP 解压缩到新文件夹中,确保文件夹层次结构与现有 PHP 版本中的现有层次结构相似。
现在在您的新文件夹中将文件“php.ini_development”复制到一个名为“php.ini”的新文件中
再次执行相同操作,但粘贴到名为“phpForApache.ini”的文件中
您现在应该拥有名为 php.ini_development PLUS 2 的原始文件,一个名为“php.ini”,一个名为“phpForApache.ini”
如果您使用 PHP CLI,即从命令行运行 php,则使用“php.ini”文件“> php script.php”
phpForApache.ini 是 Apache 使用的 php 配置。当您激活此版本的 PHP 时,该文件会被复制到当前活动的 Apache 文件夹中并由 WAMPManager 重命名为 php.ini。
我们现在必须对 php.ini 文件进行一些更改以对它们进行 WAMPise。花点时间在这里,它将为您节省以后的时间。编辑新创建的 'phpForApache.ini' 文件并搜索 extension_dir 并更改为
extension_dir = "d:/wamp/bin/php/phpx.y.z/ext/" <- where x,y,z match the folder you are putting the new PHP into.
搜索
error_log = php_errors.log
改成
error_log = c:\wamp\logs\php_errors.log
搜索任何 'php/' 并确保将其更改为您的 c:\wamp\bin\php\php.x.y.z 文件夹名称。
实际上搜索任何带有 C:\ 的内容,并确保将其更改为 WAMPServer 等效项。
从 PHP5.4 开始,需要设置时区
搜索“时区”并至少在“日期.时区”字段中输入一个条目
date.timezone = "Europe/London"
date.default_latitude = 0.0
date.default_longitude = 51.502973
在此处查看支持的时区值列表“http://www.php.net/manual/en/timezones.php”
PHP5.5 特定变化
所有的 PHP 扩展都被注释掉了,所以你至少需要手动取消一些注释
检查你上次使用的 php.ini 看看你需要什么,记住一些扩展可能已经包含在 php 的核心中,所以你可能需要查看 php 更改日志以了解详细信息。
现在您可能对现有 PHP 进行了其他配置更改,这些您必须自己查找并转移。
我建议您将上一个 \wamp\bin\apache\apachex.y.z\bin\php.ini 与这个新的进行比较,然后移开您认为相关的任何内容。
不要忘记,如果您使用的是 PHP CLI,您还需要对 php.ini 文件执行此操作。
确保所有服务都在 wampmanager 中停止,然后右键单击系统托盘中的 wamp manager 图标并选择“刷新”菜单项。
当您左键单击 wamp manager -> PHP -> 版本时,您应该会在列表中看到您的新版本。
如果没有出现新版本,那么您可能拼错了 phpForApache.ini 文件名。更正它并重做“刷新”。
您现在可以从 wamp 管理器菜单中“重新启动所有服务”。
注意:您实际上还没有改变任何东西,所以如果 WAMPServer、Apache、PHP 等在它们仍然应该工作之前工作。
激活您的新 PHP 版本。
再次使用 wamp 管理器菜单,您只需单击新版本号即可激活它。
wamp manager -> PHP -> Version -> 5.5.11 <- or whatever the version number is you have just added
这将导致 wamp 管理器:-
- 停止 Apache(图标将变为橙色)
- 将正确的文件从 PHP 文件夹复制到 Apache 文件夹,或者如果您使用的是 WAMPServer 2.5 或更高版本
在 apachex.y.z/bin 文件夹中创建正确的 SYMLINK。
- 重新启动 Apache。所以 wamp 管理器图标应该再次变绿。
如果 wamp 管理器图标保持橙色,那么你错过了一些东西,可能是文件名拼写错误。 phpForApache.ini 文件必须存在。
现在从 wamp 管理器菜单运行 localhost,并检查 wamp 服务器主页。它应该告诉你加载了哪个版本的 PHP。
[img]http://derp.co.uk/27aaf[/img]
疑难解答
如果在您激活新的 PHP 时一切都出错了,您只需激活您之前使用的任何版本的 PHP,然后再回头看看您做错了什么,就可以轻松摆脱麻烦。
添加 XDEBUG
XDEBUG 带有 WAMP 服务器,对于调试 CLI 或 WEB 脚本非常有用。
但它不附带您从 PHP 网站下载的 PHP。
将 PHP 升级到主要版本时,您可能需要从“http://xdebug.org/download.php”获取最新版本的 xdebug
对于次要版本升级,您可能可以使用磁盘上已有的现有 xdebug 版本。
因此,对于次要 PHP 版本升级,请将文件夹 'c:\wamp\bin\php\php5.y.z\zend_ext' 从旧 PHP 复制到新的 php 文件夹。
对于主要的 PHP 版本升级,从 xdebug 网站获取一个新的 dll,并将其放在一个名为 'c:\wamp\bin\php\php5.y.z\zend_ext' 的新文件夹中
现在在 php.ini 中添加这样一行(当然是特定于版本)(使用 wamp 管理器菜单,以确保您正在编辑正确的文件)
;XDEBUG Extension
zend_extension = "d:/wamp/bin/php/phpx.y.z/zend_ext/php_xdebug-2.2.2-5.3-vc9.dll"
[xdebug]
xdebug.remote_enable = off
xdebug.profiler_enable = off
xdebug.profiler_enable_trigger = off
xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "d:/wamp/tmp"