Shell 스 크 립 트 에서 PHP 5 업데이트 실현

저 는 Shell 에 푹 빠 졌 습 니 다.검은색 Console 인터페이스 에서 문자 가 뛰 는 것 을 보 는 것 을 좋아 합 니 다.이상 하 게 도 저 는 이 로 인해 Linux/Unix 프로그래머 가 되 지 않 고 CGI 프로그램 을 쓰 는 재 수 없 는 사람 이 되 었 습 니 다.다 들'PHP 프로그래머'를 어떻게 부 르 세 요?참,풀뿌리~응,땅 에 너무 오래 묻 었 으 니 언젠가 썩 을 지도 몰라! 
윈도 가 버릇 이 나 빠 서 그런 지 OS 를 바 꾸 고 싶 지 않 아 요.다행히 싸 이 그 윈,밍 거 우...이런 게 있어 요.적당 할 때 꺼 내 서 B 를 담아 서 스스로 위로 해 주세요~
나 는 항상 windows.phop.net 에서 최신 snapshot 을 다운로드 하 는 것 을 좋아한다.내 가 최신 기능 을 체험 하고 싶 은 것 이 아니 라 강박 증 의 관계 일 뿐이다-...-제 기계 에 있 는 모든 소프트웨어,프로그램 이 최신 입 니 다.대부분 베타 라벨 이 걸 려 있 습 니 다.심지어 SVN,Git 에서 직접 끌 어 내 린 trunk 버 전 도 있 습 니 다.생각해 보 니 정말 변태 입 니 다.만약 당신 이 매일 이 사이트 에 올 라 가면 인 육 은 새로운 버 전이 발표 되 었 는 지 확인 하여 자신의 변태 적 인 심 리 를 만족 시 키 면 정말 미 치 겠 습 니 다.
기계 가 할 수 있 는 일 은 손 으로 하지 마라,그렇지?다음 코드 는 최신 snapshot 을 자동 으로 check 하여 원 하 는 디 렉 터 리 로 압축 을 풀 것 입 니 다.그래서?cron job 를 만들어 걸 면 새로운 즐거움 을 찾 을 수 있 습 니 다~
코드 에서 다운로드 한 것 은 None thead safe VC9 버 전 입 니 다.사용 할 수 있 는 버 전 으로 바 꾸 는 것 에 주의 하 십시오.강제 업데이트 가 필요 하면'Cforce'인 자 를 추가 합 니 다.
마지막 줄 은 icacls 를 사용 하여 p5-nts 디 렉 터 리 에 있 는 파일 의 권한 을 리 셋 합 니 다.
PS:CGI/FCGI 설치 모드 가 아 닙 니 다.웹 서버 를 끄 세 요.

#!/bin/bash
 
INSTALL_PATH="/cygdrive/d/php5-nts"
BUILD_TIME_FILE="/cygdrive/d/php5-nts/build-time"
PACKAGE_URL="http://windows.php.net/downloads/snaps/php-5.3-nts-win32-VC9-x86-latest.zip"
 
function uprint {
  if [ "${1:0:1}" = "-" ]; then
    echo $1 "# $2"
  else
    echo "# $1"
  fi
}
 
## If unzip available?
UNZIP=`which unzip 2> /dev/null`
if [ -z $UNZIP ]; then
  uprint "Could not find unzip, please install."
  exit 1
fi
 
## Test if build-time file exists, if not, create it
if [ ! -f $BUILD_TIME_FILE ]; then
  uprint -n "Build time file does not exists, created ... "
  touch $BUILD_TIME_FILE
  echo -e "\e[32m[OK]\e[0m"
fi
 
## Get current build time
CURRENT_BUILD_TIME=`cat $BUILD_TIME_FILE`
 
## Get latest build time
LATEST_BUILD_TIME=`curl --silent http://windows.php.net/snapshots/ | \
    grep "php-5.3-nts-VC9-x86" | \
    grep "VC9 x86 Non Thread Safe (" | \
    grep -o "(.*)" | \
    sed 's/[()]//g'`
 
## Any update?
package=`basename $PACKAGE_URL`
if [ "$CURRENT_BUILD_TIME" != "$LATEST_BUILD_TIME" ]; then
  uprint -e "New version available, build time: \e[36m$LATEST_BUILD_TIME\e[0m"
else 
  if [ "$1" != "--force" ]; then
    uprint "You are using the latest snapshot version."
    exit 0
  else 
    uprint -e "\e[31mForce to update local php version.\e[0m"
  fi
fi
 
## Delete if file already exists
ls $package > /dev/null 2>&1
if test $? -eq 0; then
  uprint -n "Performing: rm -f \`ls $package\` ... "
  rm -f `ls $package`
  echo -e "\e[32m[OK]\e[0m"
fi
 
## Get latest php5 binary package
uprint -n "Downloading latest php binary package ... "
wget -q $PACKAGE_URL
echo -e "\e[32m[OK]\e[0m"
 
## Extracting
if [ -f $package ]; then
  # kill php processes
  for php_pid in `ps -as | grep php | awk '{print $1}'`
  do 
    kill -9 $php_pid
  done
 
  uprint -n "Extracting ... "
  unzip -o $package -x -d $INSTALL_PATH > /dev/null 2>&1
  echo -e "\e[32m[OK]\e[0m"
  echo $LATEST_BUILD_TIME > $BUILD_TIME_FILE
 
  uprint -n "Cleaning up ... "
  rm -f $package
  echo -e "\e[32m[OK]\e[0m"
fi
 
## Fixed cygwin permissions
icacls D:/php5-nts /reset /T > /dev/null
 
# vim: set expandtab tabstop=4 shiftwidth=4:

좋은 웹페이지 즐겨찾기