Apache 不从 PHP 加载模块
Posted
技术标签:
【中文标题】Apache 不从 PHP 加载模块【英文标题】:Apache doesn't load module from PHP 【发布时间】:2015-12-22 10:40:25 【问题描述】:我正在关注这篇葡萄牙文文章来配置 Apache 和 php:
How Install And Configure The Development Environment in PHP - Part 2.
我已经设置了 php.ini 和 httpd.conf 文件。除了 php5apache2_4.dll 位于正确的目录之外,但是当我重新启动服务器时显示以下错误:
httpd.exe:D:/Apache24/conf/httpd.conf 第 531 行的语法错误: 无效的 LoadModule 路径 \xe2\x80\xaa"D:/php-5.6.13/php5apache2_4.dll"
httpd.conf:
LoadModule php5_module "D:/php-5.6.13/php5apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "D:/php-5.6.13/"
编辑
我更改了 Httpd.conf 文件。
LoadModule php5_module "../php-5.6.13/php5apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "../php-5.6.13/"
现在又给我一个新错误:
httpd.exe:D:/Apache24/conf/httpd.conf 第 531 行的语法错误: 无法将 ../php-5.6.13/php5apache2_4.dll 加载到服务器:%1 n\xe3o \xe9 um aplicativo Win32 v\xe1lido.
英语:不是有效的 Win32 应用程序。
在控制台中:
php -version
PHP 5.6.13 (cli) (built: Sep 3 2015 15:14:40)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
httpd -version
Server version: Apache/2.4.16 (Win64)
Apache Lounge VC14 Server built: Jul 22 2015 13:24:19
【问题讨论】:
你的语法看起来是正确的......但外表可能具有欺骗性。确保您在 httpd.conf 和 php.ini 中为 all 模块条目使用“简单双引号”(“== ascii 34)。更多详细信息在此处:webmasterworld.com/forum92/3140.htm。替代建议:因为您的任何路径中都没有任何空格 - 只需完全去掉双引号即可。 我解决了,谢谢(;我改变了Apache的架构,我最后安装了Apache Win32。 【参考方案1】:我在尝试配置 php7 时遇到了同样的问题,所以对于其他遇到问题的人:
可能存在一些问题。检查您的 php 和 Apache 版本是否位兼容(64 位 x64
或 32 位 x86
;请注意,从 windows.php.net/download/ 下载 64 位 PHP 时,zip 文件将称为 @987654328 @)。
还要检查它们是否使用相同版本的 Visual Studio(例如 VC14)编译。这恰好是这里的问题:www.apachelounge.com/viewtopic.php?t=6596
就我而言,我遇到了paulsm4 提到的关于引号的问题。我从一个网站复制并粘贴了代码,发现当我运行httpd -k start
时,我的错误是httpd: Syntax error on line 62 of C:/Apache24/conf/httpd.conf: Invalid LoadModule path \x93c:/php7/php7apache2_4.dll\x94
。 \x93
和 \x94
是 CP1252 encodings 用于花哨的开头和结尾引号。消除这些或用常规引号替换它们可以解决问题,之后 Apache 可以使用 PHP 顺利运行。
其他人遇到的另一个问题是尝试使用 NTS(非线程安全)PHP 配置 Apache。
php.net/manual/en/install.windows.apache2.php PHP 下载网站也说明了这一点。
【讨论】:
"还要检查它们是否使用相同版本的 Visual Studio 编译(例如 VC14)" YES!【参考方案2】:从httpd_uwamp.conf
文件中删除双引号对UnWamp
和PHP
发行版都适用。 (我的任何路径名中都没有空格)
例如更改
LoadModule "PHPMODULENAME PHPPATH/PHPAPACHE2FILE"
到 LoadModule PHPMODULENAME PHPPATH/PHPAPACHE2FILE
感谢 Giancarlo Abel Giulian 的帖子 ;-)
【讨论】:
【参考方案3】:我遇到了同样的问题:
LoadModule 路径无效\xe2\x80\x9cC:/WAMP/php/php5apache2_4.dll\xe2\x80\x9d。
根据上面paulsm4的建议,我删除了指令LoadModule php5_module中的引号并用简单的引号代替:
LoadModule php5_module "C:/WAMP/php/php5apache2_4.dll"
这为我解决了。
【讨论】:
【参考方案4】:由于旧的 httpd.conf 文件中的简单剪切和粘贴错误,我遇到了类似的错误
LoadModule php5_module ...
而不是
LoadModule php7_module ...
希望这可以帮助其他人在谷歌上搜索此错误消息。
【讨论】:
【参考方案5】:您必须确保您使用的是兼容版本的 PHP 和 apache。这样,如果您正在运行 apache 32 位,请确保您使用的是 PHP 32 位,这同样适用于 64 位。对于初步分析,请执行以下操作。
打开命令提示符并导航到您的 apache 安装 bin 文件夹,例如 cd "C:/Apache24/bin"
然后运行以下命令查看语法是否OK httpd.ex -t
响应将告诉您是否在您的 PHP 位置中缺少提到的 dll php5apache2_4.dll。如果是这种情况,那么您必须使用 apache 下载特定的兼容 PHP 版本。否则它会告诉你语法没问题。
欲了解更多信息,请访问此链接
https://danielarancibia.wordpress.com/2015/09/27/installing-apache-2-4-and-php-7-for-development-on-windows/
【讨论】:
【参考方案6】:改变
LoadModule php7_module "c:/php/php7apache2_4.dll"
到
LoadModule php7_module /php/php7apache2_4.dll
和
PHPIniDir "c:/php"
到
PHPIniDir /php
干得好。
【讨论】:
【参考方案7】:无法将模块/php7apache2_4.dll 加载到服务器中:找不到指定的模块。这是在本地计算机中设置 apache 和 php 环境时的常见问题
我也遇到了同样的问题:解决问题的最佳方法是为 apache 服务器和 php 安装相同的 VC 级别,并确保计算机中也安装了相同的 VC++。
对我来说,我尝试使用 VC14 for apache24 和 php,还安装了恰好是 VC14 的 VC++ 2015 版
【讨论】:
【参考方案8】:在我的情况下,这是由于下载的 PHP7 类型:Non Thread Safe
只需下载 Thread Safe
版本并解压到 C:\php7 (Default directory)
,然后再次尝试启动 Apache Service。
希望有帮助!!!
【讨论】:
【参考方案9】:我很难摆脱这个错误,最终在(Apache 和 PHP)都安装了 x86 版本(不是 64)后解决了。
还避免使用简单的文件夹名称,即 Apache2.4 或 php,而是使用详细的名称(如 php_7.1.21_vc14_x86_ts
和 Apache_2.4.34_vc14_x86
)通过查看文件夹名称本身而不是不断出现奇怪的错误来捕获不匹配。
【讨论】:
【参考方案10】:我可以理解出现该错误的感觉。经过数小时的研究,我发现只需删除双引号,你就可以开始了。无需从所有三行中删除双引号。从给你错误的行中删除它们。
之前
PHPIniDir “C:/PHP”
AddHandler application/x-httpd-php .php
LoadModule php7_module "C:/PHP/php7apache2_4.dll"
之后
PHPIniDir “C:/PHP”
AddHandler application/x-httpd-php .php
LoadModule php7_module C:/PHP/php7apache2_4.dll
它对我有用。我认为上面两行不会给你错误,除非你以非常错误的方式安装了 PHP。
测试它(如果你不知道)
打开cmd(不需要以管理员身份打开,但可以)
导航到 bin 文件夹,进入 c:/apache/bin(或任何您的文件夹)
输入 httpd -t 它应该显示语法OK 如果不是这样,您需要在它说有错误的行上工作。 最好的。
回复很糟糕?我知道这是我第一次回答任何疑问。
【讨论】:
【参考方案11】:我有同样的错误。我唯一改变的是 php_module
到 php7_module
之前
PHPIniDir "c:/php"
LoadModule **php_module** "c:/php/php7apache2_4.dll"
AddType application/x-httpd-php .php
之后
PHPIniDir "c:/php"
LoadModule **php7_module** "c:/php/php7apache2_4.dll"
AddType application/x-httpd-php .php
【讨论】:
php_module
用于 PHP8.0,之前是 phpX_module
,其中 X 等于 php 的版本号,(如 php7_module
用于 PHP7)。 (# before PHP 8.0.0 the name of the module was php7_module)以上是关于Apache 不从 PHP 加载模块的主要内容,如果未能解决你的问题,请参考以下文章
如何在模块化的 java 11 应用程序中动态加载 Libreoffice jar,而不从自定义类加载器中获取 ClassCastException