뭘 이런걸..
Safari Private Browsing 한국어 모드
Safari Private Browsing 한국어 모드
Safari Private Browsing 영문 모드
char * input;
int ilen;
int no;
if ( zend_parse_parameters (ZEND_NUM_ARGS(), "sl", &input, &ilen, &no) == FAILURE )
RETURN_FALSE;
이 코드는 컴파일을 잘 되나, 그냥 segfault 가 발생한다. s(String)과 l(integer)는 다음과 같이 해 줘야 한다.zend_string * Zinput = NULL;
zend_long no;
char * input;
int ilen;
if ( zend_parse_parameters (ZEND_NUM_ARGS(), "Sl", &input, &no) == FAILURE )
RETURN_FALSE;
input = ZSTR_VAL (input);
ilen = ZSTR_LEN (input);
zend_parse_parameters 에서 string은 zend_string으로 변경해 줘야 하고, long은 zend_long로 선언을 변경해 줘야 한다. 이 외에도, string을 zval 변수로 변환하는 경우도 짜증난 케이스zval *zv;
MAKE_STD_ZVAL (zv)
ZVAL_STRING (zv, "문자열");
이 코드는 다음과 같이 변경 되어야 한다.
zval zv;
ZVAL_STRING (&zv, "문자열");
,,,
zval_ptr_dtor (&zv);
이 외에도 너무 많아서 정리가 힘들다. PHP7은 잘못하면 python 3 꼴이 날지도 모르겠다. 3party module 중에서 PHP 7을 지원을 얼마나 빨리 해 주ㄴ냐가 관건인 듯.. 물론 php code 호환 문제 까지는 바라보기도 전에 말이다. (갈 길이 너무 멀다....)
내가 만든 3party 확장들은 PHP 7 지원을 위한 코드 변경이 너무 많아서, 아예 PHP 7 지원하는 버전은 하위 호환성을 포기하고 컴파일을 막아 버렸다. --;
#if PHP_API_VERSION < 20151012
#error "************ PHP version dependency problems *******************"
#error "This package requires over php 7.0.0 !!"
#error "If you build with php under 7.0.0, use mod_krisp 2.x version"
#error "You can download mod_krisp 2.x at http://mirror.oops.org/pub/oops/libkrisp/APIs/php/"
#endif
참고로.. mod_korean migraion diff 를 보면.. 얼마나 많이 변경을 해야 하는지 대충 감이 올 듯.. 이 링크는 아직도 작업이 완료되지 않은 상태이다. --;오늘 동일한 증상을 또 확인하여, 분석해 본 결과, iDrac6 에 보안홀이 있고, 여기서 root console을 이용하여 OS로 접근을 한 것이네요.
iDrac6 사용자는 firmware를 2.80 이상으로 업데이트 해야 합니다.
현 시점 최신은 2.85 입니다.
http://www.dell.com/support/home/kr/ko/bsdt1/Drivers/DriversDetails?driverId=J7YYK
보안홀 관련 수정 사항은 2.80 changelog 에서 확인할 수 있습니다.
http://www.dell.com/support/home/kr/ko/bsdt1/Drivers/DriversDetails?driverId=9Y5XD
highjacking을 하는 libncom 에 대해서는 https://packetstormsecurity.com/files/99782/Ncom-Libcall-Hijacking-Rootkit.html 를 참조 하세요.
https://open.kldp.org 가 안녕 리눅스 3으로 migration 되었습니다. migration을 하면서 apache의 http 2 protocol 지원 문제를 해결 하였고, JAVA 환경에 대한 fix가 있었습니다.
그리고, 안녕 리눅스 패키지 일람이 완성 되었습니다.
https://joungkyun.gitbooks.io/annyung-3-user-guide/content/AnNyung3-Package-Catalog.html
이제 안녕 리눅스 운영에 대한 문서만 완성하면, 안녕 리눅스 3 GA 선언이 가능할 것 같습니다.
여전히 삽질 중입니다. :-)
apache 2.4.17 부터 mod_http2를 지원하여, apache는 2.4.18로 올려 놓았는데, 어제부터 테스트를 해 본 결과 mod_http2가 동작을 하지 않더군요.
결국에는 문제가 mod_http2가 openssl 1.0.2에서 지원하는 ALPN 을 이용하여 서비스를 하고, CentOS7의 openssl은 이를 지원하지 않는 다는 것이 문제점 입니다.
그리고, Major browser들이 NPN을 이용한 h2 protocol을 depcreated 시킨 것도 문제고요. 인터넷상에서 보면 chrome의 경우에는 다시 NPN을 지원한다고 하였으나, 여전히 48에서는 지원을 하지 않고 있습니다.
그래서 혹시 누군가가 openssl 1.0.1에 ALPN을 backport 하지 않았을까 하여 열심히 검색해 본바 찾을 수가 없더군요.
고민에 고민을 하다가 (수정했다가 관리해야 할 패키지가 늘어나는 관계로.. -- 결국 openssl 1.0.1에 ALPN을 backporting 하여 패키지룰 추가하고, 이 openssl로 httpd를 rebuild하여 mod_http2가 동작을 하게 해 놓았습니다.
엉뚱한데서 계속 시간을 잡아먹네요
openssl-1.0.1e-51.an3.2.x86_64
httpd-2.4.18-2.an3.x86_64
버전이 설치 되어 있어야 mod_http2가 동작 합니다.
P.S.
아 깜빡.. 설치 가이드가 완성 되었습니다.
https://www.gitbook.com/book/joungkyun/annyung3-installation-guide/details
마지막으로 문제가 되었던 php7 libevent extension 문제 해결(https://github.com/php/pecl-event-libevent/pull/2)과 GeoIP kernel module이 제대로 동작하지 않는 bug를 해결하고 드디어 package freeze 상태로, 설치 테스트를 하고 있습니다. package freeze 상태란, package-version-release.an3.x86_64.rpm 이라는 패키지가 파일 이름 그대로 rebuild가 되는 일이 없을 거라는 의미입니다. 변경 사항이 있으면 무조건 version 업데이트가 된다는 의미입니다. (금일 까지는 동일한 파일이름으로 pcakage가 rebuild 된 경우가 있었습니다.)
일단, 설치 테스트를 하면서 설치 문서를 만들고 있으며, 이 작업이 완료가 되면, Beta 선언을 할 예정이고, open.kldp.org에서 동작하는 서비스들을 AnNyung3으로 migration하여 실테스트 에 들어간 이후 문제가 없으면 GA 선언을 할 예정입니다. 이 작업은 대략 2월 말 정도까지 걸릴 것으로 예상이 됩니다.
* 2016.01.15 작업 완료
- php 7.0.2 update + official bug fix
- php56 5.6.17
- httpd event mpm 동작 안하는 문제 fix. 기본 MPM을 event 로 변경. php 환경은 mod_php 보다 php-fpm을 사용하는 것을 권장. php56은 mod_php 지원하지 않고 php-cli/php-fpm 만 지원
- php subpackage 중 이름이 php-xxx 에서 php-pecl-xxx 로 변경된 것 다수
* 다음 진행할 작업
- 서비스 환경에 투입하여 동작 확인
- 설치 문서 및 기타 문서 작업
- GE 선언
2015-12-22 마지막 커멘트 후 소식이 뜸했습니다. :-)
현재 안녕 3의 php 5.6을 php 7 로 변경을 했습니다. 기존의 php 5.6은 php5 package(기본 패키지 아님)으로 지원할 예정이며, php7과의 공존을 위하여 php5-cli와 php5-fpm만 지원할 예정입니다.
현재 남은 작업은 다음과 같습니다.
1. php7 용 3rd party 확장 migration (oauth/sqlrealy)
2. php5 package 제작
3. 안녕 3 실환경 migration 테스트 (http://open.kldp.org ..)
4. 문서 작성 및 GE 선언
node-js와 mongodb 관련은 릴리즈가 너무 지연이 되어 GE 선언 이후로 미루기로 결정했습니다.
현재 PHP 7 반영을 하고 있는데, 여기서 의외의 복병을 만나 시간을 잡아 먹고 있습니다.
기존 char * 형식으로 사용하던 변수들이 php 7로 오면서 zen_string 이라는 구조체를 사용하게 되었고, 이로 인하여, 기존의 patch에서 이를 다 변경해야 하는 이슈가 발생하네요.(패키들을 거의 새로 다시 작성 해야 한다는 -- 그리고 기존의 third party extension들도 다 php 7 API로 변경을 해야 하는 문제가 발생하네요. 아쉽게도 시간이 조금 더 소요가 될 것 같습니다.
아직도, php 5.6 으로 갈것이냐 php 7로 갈것이냐가 갈등의 요지이네요
어흑.. RHEL 7.2 가 나오고 말았네요. ....
rebuild 해야될 패키지들이 꽤 있습니다. 조금 더 딜레이 되겠군요.
release 까지의 남은 job list는 다음과 같습니다.
1. PHP 7 upgrade (할까 말까 고민중입니다만, 작업은 하고 있습니다.)
2. nodejs를 4.x로 할지 5.x로 할지 고민 중
3. RHEL 7.2 변경 사항 rebuild
이 작업이 끝나면 배포본 작업은 완료된 상태로 다음의 job list가 남습니다.
1. 문서 작업
2. 실전 투입(KLDP 서버중 하나..)하여 버그 테스트
이 과정을 마치면 정식 릴리즈가 될 예정입니다. 문서 작업이 완료되는 대로 일단 beta 오픈은 가능할 것 같습니다. RHEL 7.2가 release 변수를 만들어 버리네요 ^^;
이 글을 포스팅한지 한달 정도가 지났고, 현재 진행 상태를 공유 합니다.
일단, 제가 회사를 퇴사하여 백수가 된 상태라 시간이 많이 나게 되었습니다. 물론 쉬는 동안에 육아를 하고 있으므로, 아주 많이는 아닙니다. :-) 현재 12월 중 release를 목표로 달리고 있습니다만, 테스트 machine이 부족한 것이 흠이네요 ^^;
일단, 설치 테스트는 완료 되었습니다. 문서만 만들면 안녕 3설치는 가능합니다. 다만, RHEL 7부터 systemd 를 도입함으로서 설치 installer 가 많이 변경이 되어, 안녕 2 보다 설치는 타이핑을 좀 많이 해야 한다는 단점이 있습니다.
현재 남은 작업은 다음과 같습니다.
1. 몇몇 3rd party packaging
. sendmail - systemd 처리
. redis - memcached 처럼 init script로 process 여러개 관리 할 수 있도록
. proftpd - systemd 처리
. tomcat - systemd 처리
. l4vip - systemd 처리
. nodejs - version 4 upgrade
. httpd nis/ntlm 모듈 재작성 (apache 2.4부터 인증 모듈 변경)
2. 알려진 bug 수정
. /etc/login.def.exception 반영 안되는 문제 ( shadow-utils)
. jfbterm 에서 한글 입력 안되는 문제 (출력은 문제 없음)
1번 작업은 11월 안에 완료가 될 것 같고, jfbterm과 nodejs 만 빼면 12월 중에 안녕 3 릴리즈는 가능할 것 같습니다.
일단 재취업은 안녕 3릴리즈 후로 생각하고 있으므로, 안녕 3 릴리즈에는 매진을 할 수 있을 것 같습니다.
뭐 계속 약속을 못 지키고 있습니다. 아마도 시간이 조금 더 걸릴 예정입니다.
현재, 제 개인적인 사정으로 작업을 전혀 하고 있지 못하고 있습니다. 전업이 아니다 보니 문제가 발생시에 아무래도 우선 순위가 떨어질 수 밖에 없네요. 현재는 안녕 2 업데이트에만 전념하고 있는 상태 입니다. (업데이트만은 전업처럼 지원하고 있습니다. ^^)
조만간 제 신상에 변화가 생길 예정입니다. 이 문제 때문에 지연이 되고 있으며, 백수 신세가 되면 아마도 좀 빨리 진행이 가능하지 않을까 싶네요. 백수가 되기 까지 투쟁이 필요한 까닭에, 기다리시던 분들께는 양해를 구합니다.
또 다시 출시 기한을 어기고 말았네요. :-)
현재 상태는 systemd 수정(아주 조금..^^)을 마친 상태에서 daemon 들 패키징 중입니다. 기존의 init script 체제를 systemd 체제로 변경하고 있는데, 이 작업이 꽤 공수가 많이 들고 있습니다.
현재 작업 결과물은 http://mirror.oops.org/pub/AnNyung/3/ 에 공개되어 있으며 남은 작업은 다음과 같습니다.
systemd 적용 -> installer 제작 -> 정식 릴리즈
2월말 까지는 release가 가능하도록 노력해 보겠습니다. :-)
[root@main ~] pear channel-discover pear.oops.org
Adding Channel "pear.oops.org" succeeded
Discovery of channel "pear.oops.org" succeeded
[root@main ~] pear install oops/NAVER
<?php
/* $Id: test.php 1 2014-05-16 19:11:07Z oops $ */
require_once 'NAVER.php';
session_start ();
// 에러 발생시에 catch를 하기 위하여 error handler를 등록
set_error_handler ('myException::myErrorHandler');
try {
// 발급받은 키를 등록한다.
$login = (object) array (
'id' => '8avBegO24BpmziA3027D',
'secret' => '1zUVPMAl5R',
'callback' => 'http://domain.com/path/this/file'
);
// 인증 과정을 수행
$naver = new NAVER ($login);
// 인증 과정 완료 후 사용자 정보를 가져옴
$user = $naver->getUser ();
// 유저 정보 출력
print_r ($user);
} catch ( myException $e ) {
// 에러 발생시에 다음 출력
echo '<pre>' . PHP_EOL;
echo $e->Message () . PHP_EOL;
print_r ($e->TraceAsArray ());
exit;
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: noet sw=4 ts=4 fdm=marker
* vim<600: noet sw=4 ts=4
*/
?>
pear NAVER는 deprecate 되었습니다. pear_OAUTH2 package를 사용해 주세요. http://pear.oops.org/docs/oops-OAUTH2/OAUth2.html
일단 systemd도 initd에 비하여는 hacking이 쉽지 않다는 거죠. initd야 해당 script에서 수정할 사항 대충 수정하면 되지만, systemd가 될 경우에는 변경 사항이 전반적으로 미칠 수 밖에 없으니 쉽게 수정하려 하기는 함들 거라는 의미입니다. 그래서 systemd 도 반갑지 않다는 의미입니다.
그리고, ubuntu의 경우에는 repository 운영을 조금씩 해 보고 있는데, repository 운영의 knowhow도 yum repository에 비하여 비용이 많이 드는 것 같더군요.
즉, ubuntu system이 RHEL 계열에 비해서 딱히 장점을 못느끼겠다는 것입니다.
그리고 가장 중요한 것은, LTS의 life time이 server의 경우 5년이기는 하지만, 그래도 RHEL(7년)에 비해서는 짧다는 것도 부담감이기는 하죠. :-)
Comments List
ncurses extension 작업 완료
ncurses: https://bugs.php.net/bug.php?id=71299
하.. 숨어있는 문제들이 훨씬 더 많군요 :-(
내부 구조의 많은 변경으로, 단순하게 API 변경만 따라가다가는 엉뚱한 문제들이 송송 터지네요. 예를 들면 https://github.com/expressif/pecl-event-libevent/issues/3 요런 문제들이..
PHP 7의 걸림돌은 3rd party extension 들이겠군요.
참고로 PHP 7을 지원하도록 수정된(거의 비공식적인) 3rd party extension 목록을 공유합니다.
memcache: https://github.com/websupport-sk/pecl-memcache/tree/php7
libevent: https://github.com/expressif/pecl-event-libevent/
event: https://bitbucket.org/osmanov/pecl-event/src/7f233a23b34bb100753971766c5ea2611fe8d023/?at=php7-dev
mongodb: http://pecl.php.net/package/mongodb/1.1.1
등등..