답변:
공지 및 경고의 형태로 사소한 문제만으로 PHP 5.4에서 Drupal 7을 실행하기 시작했습니다.
7.12 외에도 PHP가 불만을 일으키는 문제를 해결하려면 다음 두 가지 패치가 필요합니다.
http://drupal.org/files/menu-link-save-1338282-15-d7.patch
http://drupal.org/files/database-query-clone-1414412-11-d7_0.patch
이 패치 중 하나는 이미 -dev에 적용되었으므로 7.13에있을 것이고 다른 패치는 곧 나올 것입니다. 내가 즉시 생각할 수있는 모든 경우에 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는 이것이 원하는 것이 아닐 수 있다고 경고합니다. 두 번째 버전은 완전히 동일하지만 다른 방법입니다.
$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 버전 업그레이드의 성능 이점이 줄어들지 만 제거하지는 않습니다.
안정적인 APC가 없으므로 PHP 5.4는 피해야합니다. PHP 5.3 + APC의 성능은 5.4보다 큽니다.