web-dev-qa-db-ja.com

PHP 5.4およびDrupal 7

PHP 5.4はPHP 5.3よりも高速です。

Drupal 7を5.4で実行することは問題ありませんか、それともさまざまな寄付モジュールがサイトを破壊し始める可能性がありますか?

とにかく、もし私がAPCオペコードキャッシュ(おそらく5.4)を使用したとしても、何のメリットもありませんか?

ありがとう

30
john

Drupal 7 on PHP 5.4自分で実行し始めました。通知と警告の形での軽微な問題のみです。

7.12に加えて、PHPが文句を言う原因となる問題を修正するために、これらの2つのパッチが必要になります。

http://drupal.org/files/menu-link-save-1338282-15-d7.patch

http://drupal.org/files/database-query-clone-1414412-11-d7_0.patch

これらのパッチの1つはすでに-devに適用されているため、7.13に含まれ、もう1つは間もなくリリースされる予定です。私がすぐに考えることができるすべての場合において、5.4警告を引き起こす悪い習慣は、配列キーの不適切な使用です。

この最初のバージョンは次のようになります。

$some_key = function_call();
return $some_array[$some_key];

関数呼び出しが配列またはオブジェクトを返す場合がありますが、どちらも有効な配列キーではありません。 PHP 5.3では、実際に、そして黙って起こることは次のようになります:

$some_key = function_call();
return $some_array[(string)$some_key];

ただし、PHP 5.4は、これが必要なものではない可能性があることを警告しています。 2番目のバージョンはまったく同じですが、その逆です。

$some_key = 'a_valid_key';
$may_be_a_string = function_call();
return $may_be_a_string[$some_key];

次のようなエラーメッセージが表示されます

不正な文字列オフセット 'a_valid_key'

いつでも$may_be_a_stringは、実際には配列ではなく文字列です。有効な文字列インデックスは整数のみであるためです。

問題は理解しやすく、修正は(ほとんど)適用するのが簡単なので、-devバージョンが既に更新されているか、キューに投稿されたパッチが原因ですぐに入る可能性があることがわかりました彼らのシンプルな性質。

いくつかのテストを行った後、5.4を運用環境で実行するのは "危険"だとは思わず、小規模な個人用サイトの実行を既に開始しています。他の人にも同じようにすることをお勧めします。これにより、歴史的に遅い新しいPHPバージョンの取り込みを回避できます。

執筆時点では、APCの最新バージョン3.1.9は5.4では機能しません。私はそれをうまくビルドしてgitから使用しました。

APCを使用すると、PHPバージョンをアップグレードすることによるパフォーマンス上の利点は減少しますが、削除されません。

28
Letharion

PHP 5.4は安定したAPCがないため、避ける必要があります。PHP 5.3 + APCのパフォーマンスは5.4より大きくなります。

2
vamur