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 テスト実行を介してテストを実行しましたが、正常に動作しています。

==編集2 ==

これはエラーであることが判明しました。実行curl_setopt_array中に FALSE を返しますDrupalWebTestCase::curlInitialize()。問題のこれ以上の進展はありません。

==編集3 ==

詳細なデバッグの後、これは curl CURLOPT_FOLLOWLOCATION の問題であることが判明し、set-attempt でエラーが発生しました。

4

1 に答える 1

1

CURLOPT_FOLLOWLOCATION は、php 構成内で、

  • safe_mode = オン
  • 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 に答える