【问题标题】:phpinfo() not working on mac OS-X Capitan apache2 serverphpinfo() 在 mac OS-X Capitan apache2 服务器上不起作用
【发布时间】:2016-10-26 22:09:23
【问题描述】:

我正在使用OS-X Capitan 和Apache/2.4.18 (Unix)。我有以下phpinfo.php 文件

 <?php phpinfo(); ?>

当我运行命令php phpinfo.php 时,它会正确显示phpinfo()。这在浏览器中显示不正确,而是显示如下代码

 <?php phpinfo(); ?>

我对@9​​87654328@进行了以下更改

  1. 以下行未注释

    LoadModule rewrite_module libexec/apache2/mod_rewrite.so LoadModule php5_module libexec/apache2/libphp5.so

  2. 在&lt;IfModule mime_module&gt;标签内添加MIME Typehttpd.conf文件

    AddType application/x-httpd-php .php

  3. 确保libexec/apache2/mod_rewrite.so 存在

  4. php -v 给出以下结果

PHP: parse error in /etc/php.ini on line 107 PHP 5.5.31 (cli) (built: Feb 20 2016 20:33:10) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies

  1. sudo cp /etc/php.ini.default /etc/php.ini

  2. 使用命令重启 apache2

    sudo apachectl restart

当使用 url http://localhost/phpinfo.php 从浏览器访问时,它仍然显示 php 代码 &lt;?php phpinfo(); ?&gt;

我什至尝试将上面的代码包含在&lt;html&gt;&lt;body&gt; 中,在这种情况下,browser screen was blank。

【问题讨论】:

  • 您的107 在线/etc/php.ini 是什么?
  • 第 106 行以后 ; error_reporting ; Default Value: E_ALL &amp; ~E_NOTICE &amp; ~E_STRICT &amp; ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL &amp; ~E_DEPRECATED &amp; ~E_STRICT
  • 只有一行?应该是; Production Value: E_ALL &amp; ~E_DEPRECATED &amp; ~E_STRICT。好像您的 php.ini 可能已经以某种方式丢失了它的格式;如果您使用未正确保存的内容对其进行了编辑,则可能会发生这种情况。
  • 看起来没有对httpd.conf 进行任何更改,因为&lt;IfModule dir_module&gt; DirectoryIndex index.html index.php &lt;/IfModule&gt; 配置为在我点击本地主机(/var/www/html)时选择 index.php 但是它仍然显示目录,我必须从那里点击index.php。

标签: php macos apache mamp phpinfo


【解决方案1】:

检查php中是否启用了PHP,查看文件夹mod-enabled并搜索PHP。

【讨论】:

  • 在哪里可以找到名为“mod-enabled”的文件夹? sudo find / -name "*mod-enabled*"没有结果
  • @veer7 /etc/apache2/mods-enabled/ ,它已启用 mods,抱歉 :)
  • 不!没有这样的文件夹/etc/apache2/mods-enabled/。那应该是Ubuntu,但我在mac OS-X
  • @veer7 尝试在您的 部分中将 AllowOverride 设置为 All。
  • AllowOverride 设置为 all 但徒劳无功
【解决方案2】:

我为主机定义了directory,如下所示

DocumentRoot "/var/www/html" <Directory "/var/www/html"> Options Indexes FollowSymLinks Order allow,deny Allow from all AllowOverride All </Directory>

通过启用和配置虚拟主机解决了这个问题,但是我仍然认为虚拟主机并不是绝对需要让 php 工作的。 Thoughts welcome on this.

然后我意识到我还必须启用和配置虚拟主机。我按照以下步骤操作

  1. 从/etc/apache2/httpd.conf 中取消注释以下行

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

这将允许在apache2 中定义virtual hosts

  1. 编辑文件/private/etc/apache2/extra/httpd-vhosts.conf并如下声明虚拟主机,注释任何默认虚拟主机声明

    <VirtualHost *:80> DocumentRoot "/var/www/html" ServerName myserver ServerAlias myserver-pro ErrorLog "/private/var/log/apache2/myserver-error_log" CustomLog "/private/var/log/apache2/myserver-access_log" common </VirtualHost>

知道该文件默认包含在/etc/apache2/httpd.conf 中,使用下面的行。

Include /private/etc/apache2/extra/httpd-vhosts.conf

和来自浏览器的localhost/phpinfo.php 非常棒。

【讨论】:

    【解决方案3】:

    确保使用launchctl 停止所有 HTTP 服务,并检查活动监视器。

    【讨论】:

      【解决方案4】:

      遇到类似问题,但使用 Mac OS 高 Sierra 10.13.4。 只需要在apache中启用php:

      sudo nvim /etc/apache2/httpd.conf
      

      取消注释以下行

      #LoadModule php7_module libexec/apache2/libphp7.so
      

      然后重启apache

      sudo apachectl restart
      

      【讨论】:

      • 尝试了@veer7 的较早答案,但没有奏效......这个答案对我有用,取消注释该行就是我所做的一切!
      • 不存在这样的行怎么办?
      猜你喜欢
      • 1970-01-01
      • 2016-10-07
      • 2014-12-15
      • 2016-01-11
      • 2016-10-24
      • 2015-12-31
      • 2016-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多