linux

Total 136
Today 0
profile_image
ino
07-10-23 13:42 0개 3,108회
foreach() in /xxx/lib.php on line 22 제로보드
http://www.zeroboard.com/?mid=zb4_tip&page=3&document_srl=855844



아래처럼

Warning: Invalid argument supplied for foreach() in /xxx/lib.php on line 22

제로보드 사용도중.. 이것과 비슷한 에러가 발생한다면..

제로보드 폴더안 lib.php를 열어..



@error_reporting(E_ALL ^ E_NOTICE); 이것 다음행에 아래소스를 추가해주시면됩니다..^^



if (!is_array($HTTP_GET_VARS)) $HTTP_GET_VARS = array();



실제 해결은

2007.07.05 16:37 김용우 말씀해주신 현상이 발생하는 이유는 PHP가 5.0으로 버전업이 되면서 기본 설정값이 변경되었기 때문입니다.



php 5.0 이상에서 register_long_arrays 라는 설정값이 새로 생겼는데, 이 설정값은 $HTTP_*_VARS 형태의 미리 정의된 변수를 등록할 것인지 아닌지를 설정합니다.



이 값이 Off로 되어 있고 소스 내에서 $HTTP_GET_VARS 같은 변수를 사용하면 위와 같은 에러 메시지가 발생합니다.



제일 간단한 해결책은 소스를 건드리지 않고



php.ini에서



register_long_arrays = On



로 설정하는 것입니다.



그러나 차기 버전인 php 6.0에서는 register_long_arrays 설정값이 없어질 예정이라고 하고, 성능 측면에서도 이 설정값을 On으로 바꾸기 보다는 $HTTP_*_VARS 형태의 변수를 아래처럼 $_GET 같은 형태의 변수로 바꿔주는 것이 유리하다고 하니, 제로 보드의 소스도 아래처럼 변경되는 것이 좋지 않을까 싶습니다.



$HTTP_SERVER_VARS -> $_SERVER

$HTTP_GET_VARS -> $_GET

$HTTP_POST_VARS -> $_POST

$HTTP_COOKIE_VARS -> $_COOKIE

$HTTP_POST_FILES -> $_FILES

$HTTP_ENV_VARS -> $_ENV

댓글목록

등록된 댓글이 없습니다.