Shell 스 크 립 트 에서 PHP 5 업데이트 실현
윈도 가 버릇 이 나 빠 서 그런 지 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:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.