【问题标题】:short_open_tag setting ignored by PHPUnitPHPUnit 忽略了 short_open_tag 设置
【发布时间】:2016-05-15 20:39:07
【问题描述】:

尝试测试我的(遗留代码)应用程序中以短打开标记(<? 而不是<?php)开头的任何 .php 文件时,我的 PHPUnit 测试一直失败。

但在我的php.ini 文件中,short_open_tag 设置为On

应用程序运行良好。为什么 PHPUnit 对简短的打开标签感到不安?我查找了其他php.ini 文件,但只能在/etc/php.ini 找到那个。我的.htaccess 文件也不会影响此设置。还有什么可能导致这种情况?

【问题讨论】:

  • 只需使用<?php 而不是<?...
  • 我正在使用遗留代码,其中可能有成百上千的短开放标签实例,在我们进行单元测试之前进行这种代码更改是不可行的......跨度>
  • 你能添加你得到的错误信息吗?
  • 要确定是否启用了short_open_tag,请输入php -i |grep 'short_open_tag'

标签: php phpunit php-ini


【解决方案1】:

一般解决方案

1) 查看加载的是哪个php.ini文件(命令行:php --ini

2a) 在那个 php ini 文件中设置:short_open_tag = on

2b) 在 .htaccess 文件中设置:php_value short_open_tag 1

3) 重启服务器(命令行:service httpd restart

【讨论】:

  • 我使用 phpunit.xml 配置文件来运行测试,并且在 <php> 标记内添加 <ini name="short_open_tag" value="1" /> 不会打开该设置。您知道如何使用 phpunit.xml 配置文件打开此设置吗?
  • 所以我发布了上面的问题:stackoverflow.com/questions/35277342/…,结果你不能在运行时更改short_open_tag 设置。因此,我认为通过该选项不会起作用。 (虽然很好的通用解决方案)
【解决方案2】:

所以,我让它工作了,但解决方案令人沮丧:我的应用程序位于 VM 上,并且 VM 中的 php.ini 文件具有正确的设置。然而,PHPUnit 在我的本地机器上使用了php.ini 文件,该文件将short_open_tag 设置为Off。更改该设置解决了我的问题。

(我仍然不确定为什么 PHPUnit 使用另一个 php.ini,但我认为这超出了这个问题的范围。)

【讨论】:

    【解决方案3】:

    PHPUnit 使用 PHP 的 PHP-cli 模块。 PHP-cli 有另一个.ini 文件用于其配置。就我而言,我使用的是 ubuntu 14.04

    /etc/php5/apache2/php.ini //用于网络编译器

    /etc/php5/cli/php.ini // 用于PHP-cli,这里需要设置short_open_tag=On

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2014-10-10
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多