将 PHP 版本从 7.0.7 更改为 7.2.2 并更改回 7.0 7 现在 PHP 不再工作



我正在测试一个应用程序,看看它是否可以在 7.0.7 和 7.2.2 中工作。 该应用程序适用于两者;这不是问题所在。

在看到该应用程序在7.2.2中工作后,我将Windows Apache httpd.conf文件更改为:

LoadModule php7_module "C:/php_7_0_7/php7apache2_4.dll"
PHPIniDir "C:/php_7_0_7/"

从:

LoadModule php7_module "C:/php_7_2_2/php7apache2_4.dll"
PHPIniDir "C:/php_7_2_2/"

更改路径后,我重新启动了Apache。

转到 URL 本地主机网页正确出现。

转到localhost/phpinfo.php不会出现。错误消息是"无法访问该站点"。 文件 phpinfo.php 只是<?php phpinfo(); ?>

Apache 错误文件具有以下内容:

[2018 年 2 月 1 日星期四 16:03:48.820715] [核心:警告] [PID 7628:TID 780] AH00098:pid 文件 C:/Apache24/logs/httpd.pid 被覆盖 -- 以前的 Apache 运行的不干净关闭?

PHP 警告:PHP 启动:curl:无法初始化模块使用模块 API 编译的模块=20151012使用模块 API 编译的 PHP =20170718这些选项需要匹配 第 0 行的"未知"中

PHP 警告:PHP 启动:无法加载动态库"php_fileinfo.dll"(已尝试:C:\php_7_0_7\ext\php_fileinfo.dll(找不到指定的过程。\r),C:\php_7_0_7\ext\php_php_fileinfo.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP警告:PHP 启动:无法加载动态库"php_gd2.dll"(已尝试:C:\php_7_0_7\ext\php_gd2.dll(找不到指定的过程。\r),C:\php_7_0_7\ext\php_php_gd2.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP 警告:PHP 启动:无法加载动态库"php_intl.dll"(已尝试:C:\php_7_0_7\ext\php_intl.dll(找不到指定的模块。\r)、C:\php_7_0_7\ext\php_php_intl.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP 警告:PHP 启动:无法加载动态库"php_imap.dll"(已尝试:C:\php_7_0_7\ext\php_imap.dll(找不到指定的过程。\r)、C:\php_7_0_7\ext\php_php_imap.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP 警告:PHP启动:ldap:无法初始化模块使用模块 API 编译的模块 API=20151012使用模块 API 编译的 PHP =20170718这些选项需要匹配 在第 0 行的"未知"中

PHP 警告:PHP 启动:无法加载动态库"php_mbstring.dll"(已尝试:C:\php_7_0_7\ext\php_mbstring.dll(找不到指定的过程。\r),C:\php_7_0_7\ext\php_php_mbstring.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP警告:PHP 启动:无法加载动态库"php_exif.dll"(已尝试:C:\php_7_0_7\ext\php_exif.dll(找不到指定的过程。\r)、C:\php_7_0_7\ext\php_php_exif.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP 警告:PHP 启动:无法加载动态库"php_mysqli.dll"(已尝试:C:\php_7_0_7\ext\php_mysqli.dll(找不到指定的过程。\r\n)、C:\php_7_0_7\ext\php_php_mysqli.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP警告:PHP 启动:无法加载动态库"php_openssl.dll"(已尝试:C:\php_7_0_7\ext\php_openssl.dll(找不到指定的过程。\r)、C:\php_7_0_7\ext\php_php_openssl.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP警告:PHP 启动:无法加载动态库"php_pdo_mysql.dll"(已尝试:C:\php_7_0_7\ext\php_pdo_mysql.dll(找不到指定的过程。\r),C:\php_7_0_7\ext\php_php_pdo_mysql.dll.dll(找不到指定的模块。\r))在第 0 行的未知

PHP 警告: PHP 启动: pdo_sqlite: 无法初始化模块使用模块 API 编译的模块=20151012使用模块 API 编译的 PHP =20170718这些选项需要匹配 第 0 行的"未知

" PHP 警告: PHP 启动: xsl: 无法初始化模块使用模块 API 编译的模块=20151012使用模块 API 编译的 PHP =20170718这些选项需要匹配 在第 0 行的"未知"中

PHP 已弃用:指令"track_errors"在第 0 行的"未知"中已弃用

当我使用命令行并运行php -i "print phpinfo();" -> delete.txt运行时一切看起来都正常。窗口环境变量路径包括"C:\php_7_0_7">

这是我认为会指示扩展程序出现问题的行:

extension_dir => C:php_7_0_7ext => C:php_7_0_7ext

这是扩展的正确路径。

PHP 错误报告设置为 E_ALL(这是一台开发计算机)

display_errors = 开 display_startup_errors = 开

当一个文件只是phpinfo();无法访问该站点时。 运行使用 mysqli 扩展名连接到数据库的文件会出现此错误"致命错误:未捕获错误:调用 C:\www\mysqli.php:8 中的未定义函数 mysqli_connect() 堆栈跟踪:#0 {main} 在第 8 行抛出 C:\www\mysqli.php">

当 phpinfo 从命令行运行并保存到文件中时,它包括以下行:

mysqli
MysqlI Support => enabled

这让我认为命令行中的 php 正在工作,并且 Apache 和 PHP 之间缺少一些配置或通信。

IIS 的服务已关闭。

编辑1:使用在命令行上启动的内置服务器与php -S localhost:8000一切正常! 但是我想使用Apache,因为这是主商店运营的内容。加上本地主机末端的端口:8000破坏了站点。

编辑2:当httpd.exe作为服务停止并通过双击它启动时,一切都会像它应该的那样运行。 也许这意味着服务和目录之间存在权限冲突。

更新:有效。 不起作用。

PHP 启动时是否创建了错误日志?

如何对此进行故障排除? 我在第二个小时,我正在寻求建议。

感谢您的所有建议。

在升级我的 php、apache 和 mysql 堆栈后,我遇到了非常相似的问题。 具体来说,一切似乎都有效,但没有一个模块可用,我确信扩展路径是正确的。在检查错误日志时,我注意到与您的条目相似,文件名为php_php_{module_name}.dll.dll.

在此过程中,我复制了一个旧的 php.ini 文件,其中列出了如下模块名称: extension=php_gd2.dll ;extension=php_gettext.dll

但是,与php.ini-developmentphp.ini-production文件进行比较时,所有模块都列出如下: extension=gd2 ;extension=gettext

以防万一我错过了其他更改,我最终只是复制了正确的示例文件php.ini-development|php.ini-production并对其进行编辑以再次适合我的环境,但您可能只需从每个扩展列表中删除php_.dll段即可。

希望这对其他人有所帮助。

hi5,今天遇到了同样的问题。似乎较低的 Apache 版本(我有 2.4.18)确实可以正确加载 curl 和 openssl 扩展。新的 php.ini 扩展格式也存在问题(请注意没有"php_"和".dll"),白色自述文件指出仍支持旧格式)。 什么通过两个不间断的步骤解决了我的问题:

  1. 使用此将 WAMP 3.0.2 更新到 3.1.1
  2. 使用此将 Apache 更新到 2.4.29

重新启动后不要忘记在WAMP菜单中切换Apache版本,并在php中使用新的扩展格式.ini

最新更新