iwinv에서 perl cgi 쓰기
Posted by 마냥 on the 6th of February, 2018 at 10:51 pm under 사는이야기. Post is not tagged. This post has 2 comments.iwinv에서 perl CGI script를 어떻게 했나 궁금하신 분이 계셔서 정리 해 봅니다.
안 해본 방법
홈페이지를 옮기고 나서 perl CGI script가 동작하지 않는 것을 확인하고 게시판에 문의를 넣어봤습니다. 거기에 이런 답변을 받았습니다. 답변 받은 내용이니 아마 될 거 같은데 전 답변을 확인한 시점이 이미 아래 적을 PHP를 만든 뒤여서 확인은 안했습니다.
안녕하세요.
iwinv 입니다.
웹호스팅에서 perl과 cgi 기능을 이용 하실 수는 있으나, 웹방화벽을 사용 하고 계시면 정상적으로 이용 할 수 없을 수도 있습니다.
관리 콘솔 – 계정 – 웹방화벽 off 를 해보시기 바랍니다.
감사합니다.
PHP wrapper script로 돌리는 방법
php로 직접 perl cgi를 실행하고 그 결과를 HTML로 전달하는 방법입니다.
<?php echo "<!--".PHP_EOL; $num_get = count($_GET); $num_post = count($_POST); echo " # of _GET:".$num_get.PHP_EOL; echo " # of _POST:".$num_post.PHP_EOL; $param = ""; if($num_get > 0) { foreach($_GET as $key => $value) { echo $key.'='.$value.PHP_EOL; $param = $param."$key=$value&"; } } if($num_post > 0) { foreach($_POST as $key => $value) { echo $key.'='.$value.PHP_EOL; $param = $param."$key=$value&"; } } echo "-->".PHP_EOL; exec("QUERY_STRING=\"$param\" /usr/bin/perl ".dirname($_SERVER['SCRIPT_FILENAME'])."/pldbbs.cgi", $output); $header_found = 0; foreach($output as $line) { if($header_found == 0) { if(strlen($line) > 0) { continue; } else { $header_found = 1; } } $line = str_replace("pldbbs.cgi", "pldbbs.php", $line); echo $line.PHP_EOL; } ?>
GET 또는 POST 변수들을 만들어서 QUERY_STRING으로 전달하고 perl을 이용해 직접 스크립트를 실행합니다. 실행한 결과에서 http header 부분을 제거하고 html 부분에서 pldbbs.cgi를 pldbbs.php로 바꿨습니다. 저 같은 경우는 예전에 사용한 방명록을 읽기 전용으로 바꿨기 때문에 이 정도 수정으로 충분 했습니다. 쿠키를 쓰는 경우는 해당 코드를 추가로 구현해야 합니다.
덧붙여서 cgi 파일 소스가 그대로 나오기 때문에 다음과 같이 .htaccess 파일을 추가해서 소스가 나오지 않게 하는 것이 좋습니다.
<Files ~ "^.*\.([cC][gG][iI]|[lL][oO][gG])"> order allow,deny deny from all satisfy all </Files>
wordpress plugin 추가
Posted by 마냥 on the 22nd of January, 2018 at 11:56 pm under 컴퓨터. Post is not tagged. This post has no comments.예전에 적은 것처럼 wordpress업데이트 후 매번 패치를 하고 있다. (글 읽을 수 없는 문제 해결) 꼬박꼬박 해야 해서 귀찮아서 wordpress에 ticket도 등록했으나 딱히 진행이 안되고 있었다. 도움이 될만한 정보를 찍고 있었는데 업데이트 하면서 그 코드도 다 날라간 상태.
이 문제를 꼭 core 부분을 고칠 게 아니라 plugin으로 가능할 지 찾아봤다. 문제가 되는 함수는 WP::parse_request(). 함수 구현을 찬찬히 살펴보니 맨 처음 ‘do_parse_request’ 라는 filter를 부르고 있었다.
본격적으로 시작 하기 전 시점에 문제가 되는 $_SERVER[‘REQUEST_URI’] 변수를 미리 urldecode하는 plugin을 만들었다. 몇번 시행착오 끝에 원하든 동작을 만들었다.
앞으로 wordpress 버전 올리는데 귀찮은게 하나 줄었다ㅎ
iwinv로 이전 중
Posted by 마냥 on the 6th of January, 2018 at 2:05 am under 컴퓨터. Post is not tagged. This post has 5 comments.생각보다 도메인 이전 하는데 시간이 오래 걸렸다. 오랜 기다림 끝에 먼저 연락이 왔고, 이틀간 몇번 연락을 주고 받은 뒤에야 끝났다.
조금 전 iwinv 웹 호스팅으로 이전했다. 일단 블로그는 되나 나머지 읽기 전용 서비스들은 확인이 필요하다.
- 게시판 php7포팅
- 일단 게시물 목록과 게시글 나오게 수정 완료
moniwiki 재 설정- moniwiki가 아직 php7 지원을 안하는 듯 (https://github.com/wkpark/moniwiki/issues/120)
- 미련을 버리고 꼭 필요한 page만 옮김(wiki)
- 예전 방명록 perl cgi 복구
- web server에서 perl cgi 지원을 안하는 것 같다.
- 다행히 서버에 perl이 있어서 php를 통해 해당 script를 실행하도록 wrapper 구현 완료