1

过了一会儿,我运行了这个示例测试,Drupal 批处理屏幕(带有进度条的屏幕)停止运行,我的服务器日志中没有记录任何错误,整个浏览器窗口保持冻结状态。代码非常基础:

<?php
class FooTestCase extends DrupalWebTestCase {
  public static function getInfo() {
    return array(
      'name' => 'test',
      'description' => 'test',
      'group' => 'Foo',
    );
  }

  public function setUp() {
    parent::setUp();
  }

  public function testLogin() {
    // The drupalCreateUser() runs fine
    $user = $this->drupalCreateUser(array('access content'));
    // If i comment out the following, test runs fine.
    $this->drupalLogin($user);
  }
}
?>

我错过了什么?

== 编辑1 ==

另一个线索:我通过 drush test-run 运行测试,它们运行良好。

== 编辑2 ==

结果证明这是一个curl_setopt_array错误,它在DrupalWebTestCase::curlInitialize(). 这个问题没有进一步的进展。

== 编辑3 ==

经过更深入的调试后,这被证明是 curl CURLOPT_FOLLOWLOCATION 的问题,这会在设置尝试时触发错误。

4

1 回答 1

1

如果在您的 php 配置中,CURLOPT_FOLLOWLOCATION 将不起作用,

  • 安全模式 = 开
  • open_basedir 已设置

因此,更改其中一个或两个应该可以解决问题。有 3 个地方可以实现这一目标。

php.ini safe_mode = Off 中,并注释掉open_basedir

apache .conf.htaccess中

php_value safe_mode Off
php_value open_basedir none

请注意,您的服务器配置必须允许值覆盖才能在 .htaccess 上工作。

另请注意,CURLOPT_FOLLOWLOCATION 自 php 5.3 以来已被弃用,并在 php 5.4 中被删除。

于 2013-05-13T10:18:14.777 回答