【发布时间】:2018-07-12 11:04:30
【问题描述】:
我正在测试一个应用程序,看看它是否可以在 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,网页会正确显示。
去 localhost/phpinfo.php 没有出现。错误消息是“无法访问该站点”。文件 phpinfo.php 就是 <?php phpinfo(); ?>
Apache 错误文件有以下内容:
[2018 年 2 月 1 日星期四 16:03:48.820715] [core:warn] [pid 7628:tid 780] AH00098:pid 文件 C:/Apache24/logs/httpd.pid 被覆盖 - 以前的 Apache 运行不正常关闭?
PHP 警告:PHP 启动:curl:无法初始化模块\n使用模块 API=20151012 编译的模块\n使用模块 API=20170718 编译的 PHP\n这些选项需要在第 0 行的未知中匹配\n
PHP 警告:PHP 启动:无法加载动态库 'php_fileinfo.dll'(已尝试:C:\php_7_0_7\ext\php_fileinfo.dll(找不到指定的过程。\r\n),C:\ php_7_0_7\ext\php_php_fileinfo.dll.dll (The specified module could not be found.\r\n)) in Unknown on line 0
PHP 警告:PHP 启动:无法加载动态库 'php_gd2.dll'(已尝试:C:\php_7_0_7\ext\php_gd2.dll(找不到指定的程序。\r\n),C:\ php_7_0_7\ext\php_php_gd2.dll.dll (The specified module could not be found.\r\n)) in Unknown on line 0
PHP 警告:PHP 启动:无法加载动态库 'php_intl.dll'(已尝试:C:\php_7_0_7\ext\php_intl.dll(找不到指定的模块。\r\n),C:\ php_7_0_7\ext\php_php_intl.dll.dll (The specified module could not be found.\r\n)) 在 Unknown on line 0
PHP 警告:PHP 启动:无法加载动态库 'php_imap.dll'(已尝试:C:\php_7_0_7\ext\php_imap.dll(找不到指定的程序。\r\n),C:\ php_7_0_7\ext\php_php_imap.dll.dll (The specified module could not be found.\r\n)) 在 Unknown on line 0
PHP 警告:PHP 启动:ldap:无法初始化模块\n使用模块 API=20151012 编译的模块\n使用模块 API=20170718 编译的 PHP\n这些选项需要在第 0 行的未知中匹配\n
PHP 警告:PHP 启动:无法加载动态库 'php_mbstring.dll'(已尝试:C:\php_7_0_7\ext\php_mbstring.dll(找不到指定的程序。\r\n),C:\ php_7_0_7\ext\php_php_mbstring.dll.dll (The specified module could not be found.\r\n)) 在 Unknown on line 0
PHP 警告:PHP 启动:无法加载动态库 'php_exif.dll'(已尝试:C:\php_7_0_7\ext\php_exif.dll(找不到指定的程序。\r\n),C:\ php_7_0_7\ext\php_php_exif.dll.dll (The specified module could not be found.\r\n)) 在 Unknown on line 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 (The specified module could not be found.\r\n)) 在 Unknown on line 0
PHP 警告:PHP 启动:无法加载动态库 'php_openssl.dll'(已尝试:C:\php_7_0_7\ext\php_openssl.dll(找不到指定的程序。\r\n),C:\ php_7_0_7\ext\php_php_openssl.dll.dll (The specified module could not be found.\r\n)) 在 Unknown on line 0
PHP 警告:PHP 启动:无法加载动态库 'php_pdo_mysql.dll'(已尝试:C:\php_7_0_7\ext\php_pdo_mysql.dll(找不到指定的程序。\r\n),C:\ php_7_0_7\ext\php_php_pdo_mysql.dll.dll (The specified module could not be found.\r\n)) in Unknown on line 0
PHP 警告:PHP 启动:pdo_sqlite: 无法初始化模块\n使用模块 API=20151012 编译的模块\n使用模块 API=20170718 编译的 PHP\n这些选项需要在第 0 行的未知中匹配\n
PHP 警告:PHP 启动:xsl:无法初始化模块\n使用模块 API=20151012 编译的模块\n使用模块 API=20170718 编译的 PHP\n这些选项需要在第 0 行的未知中匹配\n
不推荐使用 PHP:在第 0 行的 Unknown 中不推荐使用指令“track_errors”
当我使用命令行并运行 php -i "print phpinfo();" -> delete.txt 运行一切正常。 windows环境变量路径包括“C:\php_7_0_7”
这是我认为表明扩展存在问题的行:
extension_dir => C:\php_7_0_7\ext => C:\php_7_0_7\ext
这是正确的扩展路径。
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相关目录中
-
所有的扩展都在相对的php目录中。 PHP 7.0.7 在安装 PHP 7.2.2 之前运行良好。唯一复制到 PHP 7.2.2 的是 php.ini 文件,该文件已相应修改。
标签: php windows apache configuration