【问题标题】:Apache doesn't load module from PHPApache 不从 PHP 加载模块
【发布时间】:2015-12-22 10:40:25
【问题描述】:

我正在关注这篇葡萄牙文文章来配置 Apache 和 PHP:

How Install And Configure The Development Environment in PHP - Part 2.

我已经设置了 php.inihttpd.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。

标签: php apache httpd.conf


【解决方案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\x94CP1252 encodings 用于花哨的开头和结尾引号。消除这些或用常规引号替换它们可以解决问题,之后 Apache 可以使用 PHP 顺利运行。

其他人遇到的另一个问题是尝试使用 NTS(非线程安全)PHP 配置 Apache。

php.net/manual/en/install.windows.apache2.php PHP 下载网站也说明了这一点。

【讨论】:

  • "还要检查它们是否使用相同版本的 Visual Studio 编译(例如 VC14)" YES!
【解决方案2】:

httpd_uwamp.conf 文件中删除双引号对UnWampPHP 发行版都适用。 (我的任何路径名中都没有空格)

例如更改

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 位。对于初步分析,请执行以下操作。

        1. 打开命令提示符并导航到您的 apache 安装 bin 文件夹,例如 cd "C:/Apache24/bin"

        2. 然后运行以下命令查看语法是否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_tsApache_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。

                  测试它(如果你不知道)

                  1. 打开cmd(不需要以管理员身份打开,但可以)

                  2. 导航到 bin 文件夹,进入 c:/apache/bin(或任何您的文件夹)

                  3. 输入 httpd -t 它应该显示语法OK 如果不是这样,您需要在它说有错误的行上工作。 最好的。

                  回复很糟糕?我知道这是我第一次回答任何疑问。

                  【讨论】:

                    【解决方案11】:

                    我有同样的错误。我唯一改变的是 php_modulephp7_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
                    

                    【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2017-08-04
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多