블로그 이미지
Rootrator
1개를 알면 모르는 10개가 튀어나온다..!

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2014. 6. 24. 17:04 Scripts


php5.3 부터는 session_register()와 session_unregister()가 사용되질 않는다.


session_register('ID',$ID);

> $_SESSION['ID']=$ID;


session_unregister("ID");

> unset($_SESSION['ID']);



반응형
posted by Rootrator
2013. 6. 19. 09:53 Scripts



Warning: imagepng()  [function.imagepng]: gd-png: fatal libpng error: zlib error in 파일명 on line XX





PHP4에서 사용하던 소스를 PHP5에서 운용하다보니 위와 같은 에러 발생


libpng나 gd 등 재설치도 소용이 없었는데.. 문제는 버전차이로 인한 변경점



imagepng($dst, $thumb_path.'/'.$list[$i][wr_id], $qulity);


제일 마지막 함수인데 PHP4에선 압축률을 0 - 100까지 지정할수 있으나 


PHP5에선 0 - 9로 변경되었다.


imagepng($dst, $thumb_path.'/'.$list[$i][wr_id], 9);


위와같이 변경하니 에러가 사라짐..

반응형
posted by Rootrator
2011. 7. 4. 11:13 Scripts

if test -f /파일명
then 
  echo "있다!" 
else 
  echo "없다!" 
fi 


-d 파일이 디렉토리인지 체크 
-e 파일이 존재하는지 체크 
-f 파일이 일반적인 파일인지 체크 
-g 파일이 SGID 퍼미션을 가졌는지 체크 
-r 파일이 읽기 가능인지 체크 
-s 파일의 크기가 0이 아닌지 체크 
-u 파일이 SUID 퍼미션을 가졌는지 체크 
-w 파일이 쓰기 가능인지 체크 
-x 파일이 실행 가능인지 체크


서버 2대에서 새벽마다 동기화 시킬때

중요설정 파일이 넘어오지 않았다면 설정파일을 잘못 덮어써서 

서비스가 안되는걸 방지하는데 쓸수 있다. 여러모로 유용한 스크립트

 
반응형
posted by Rootrator
2011. 6. 29. 15:11 Scripts

Microsoft VBScript 런타임 오류 error '800a0006'

오버플로: 'cint'

/list.asp, line 180


어느날 자기네 게시판에 오류가 뜬다고 해서 확인해 보니..

웬일인지 오버플로 에러가 떴다.

int 타입의 한계를 벗어난 값을 받으면 저런 에러가 뜨는데..

오류가 나는 줄에서 Clng 타입으로 바꾸어 주면 해결된다.
 

반응형
posted by Rootrator
2011. 4. 12. 15:59 Scripts
PHP 4.3 버전에서 잘만 돌아가던 소스가 5.2에선 먹통이었다.

소스 분석해 보니 변수값을 읽어 오지 못한 것이었는데..

php.ini에서 register_globals 값을 off하라는데... 별 소용이 없었다.

(아파치 재시작을 해주어야 함미다~~~)

php 4버전에서는 위 register_globals 값이 기본적으로 on이 되어있었지만

5버전으로 넘어오면서 보안강화를 이유로 off가 기본값으로 바뀌어 졌다.

따라서 설정을 바꾸지 않으려면 소스 하나씩을 다 바꾸어야 한다.
 
echo $no ; 

위 소스를

echo $_POST[no] ;

이런 방식으로 말이다.
 

하지만 일일히 바꿀 필요 없이 소스 상단에 몇줄 정의해 주기만 해도 된다.

extract($_POST) ;
extract($_GET) ;
extract($_SERVER) ;
extract($_FILES) ;
extract($_ENV) ;
extract($_COOKIE) ;
extract($_SESSION) ;

하지만 마지막 세션줄 추가하니 오류가 떠서 그냥 지워버렸다.
 
위 부분을 정의해 주거나 파일을 하나 생성해서 인클루드 하는 방법으로 해결할 수 있다.

만세
 
반응형
posted by Rootrator
2011. 3. 4. 12:17 Scripts


관리하는 서버중 부하가 무거워 가끔 아파치가 죽어서 안올라오는 경우가 있다.

이전에 써먹었던 아파치 재시작 프로그램을 응용해서 쉘을 짜봤다.

#!/bin/sh

  if [ "`pgrep -x httpd | wc -l`" -eq "0" ] ; then
    /etc/init.d/httpd start
  fi

eq는 같다의 의미로
ge(크거나 같다),
gt(크다),
le(작거나 같다),
lt(작다)
등이 있다.

작성후 테스트
[root@localhost test]# service httpd stop
httpd 를 정지함:                                           [  확인  ]
[root@localhost test]# ./httpd_starter.sh
httpd (을)를 시작합니다:                               [  확인  ]

테스트 결과 정상적으로 작동을 하는것이 확인되었다.

이 쉘을 crontab에 등록하여 10분마다 돌아가도록 설정하였다.

0-59/10 * * * * /root/test/httpd_starter.sh

끝! 

반응형
posted by Rootrator
2011. 3. 3. 11:19 Scripts

출처 : linux.co.kr

while ( true ) ; do
  if [ "`pgrep -x httpd | wc -l`" -ge "500" ] ; then
    /usr/local/apache/bin/apachectl restart
  fi   
  sleep 1
done

하나하나씩 살펴보자

while문은 어느 조건을 만족할때까지 계속적으로 실행되는 반복문이다.

그럼 그것이 어떤 조건이냐 함은

pgrep -x httpd | wc -l 이 500 이하일때, 즉 현재 서버에서 돌아가는 httpd 프로세스의 갯수가 500개

이하일때를 뜻한다.


httpd 갯수를 구하는 명령어를 살펴보자.

ps -e는 서버에서 돌아가는 프로세스 전체를 보여준다.

ps -e | grep -w httpd  여기서 -w는 단위단어 검색이다. 즉, https 같은 단어는 검색되지 않는다.

여기서 해당 줄을 카운트하는 명령어만 써주면 완성이다.

ps -ed | grep -w httpd | wc -l

이걸 더 간단화 시키면

pgrep -x httpd | wc -l

pgrep은 httpd 프로세스의 pid를 얻기 위해 쓰이는 명령어이다.

여기까지가 프로세스 갯수를 구하는 명령어..


다음으로 아파치를 재시작하는 명령어이다.

간단히 service httpd restart 하거나 /usr/local/bin/apachectl restart로 할 수 있으나,

간혹가다 죽지않고 뻐팅기는 프로세스가 있어서 시작이 안되는 경우가 있다.

이럴때는 강제로 프로세스를 죽이는 방법이 있다.

pgrep -x httpd | xargs kill -9

xargs는 앞에 pgrep에서 얻은 인자를 뒤의 kill -9의 인자로 넘겨주겠다는 명령어다.

이렇게되면 httpd 프로세스가 몇백개를 넘겨도 다 죽일수 있다.

자 이렇게 완성된 명령어로 아파치 재시작 프로세스가 완성되었는데.

sleep 1을 넣어 1초간 쉬어 서버의 부하를 덜어주면서 스크립트가 계속 실행될 수 있게 되었다.




반응형
posted by Rootrator
prev 1 next