[강가딘]님이 남기신 글:
>[산이]님이 남기신 글:
>
>>
>>[강가딘]님이 남기신 글:
>>
>>>-----------------------------------------
>>>답변자가 기본적으로 참고할 내용입니다.
>>>- 배포판(옵션) :
>>>- 커널버전(옵션)
:
>>>- 데몬버전(예:apache
1.3.27) :
>>>- 데몬설치유형(RPM/컴파일/기타)
:
>>>-----------------------------------------
>>>서버계정에다가
올려놓고, 게정에서
>>>$> djpeg -pnm testimg.jpg > testimg_tmp.pnm
>>>$> pnmscale -xy 110 83 testimg.jpg_tmp.pnm | cjpeg -progressive -optimize -smooth
>>>20 -outfile thumb_testimg.jpg
>>>
>>>위의 명령을 주면,,,최종적으로
110,83사이즈의 섬네일이미징 thumb_testimg.jpg가
잘~~~생성됩니다..
>>>
>>>그런데 게시판 프로그램코드에
삽입하여서 파일업로드하니..
>>>원본업로드는
올라가는데,
>>>썸네일이미지가
생성이 안된에ㅛ..
>>>
>>>게시판 프로그램 코드에..
>>>exec( "djpeg -pnm $updir/$filename > $updir/$filename_tmp.pnm" );
>>>exec( "pnmscale -xy $thumb_x $thumb_y $updif/$filename_tmp.pnm | cjpeg
-progressive -optimize -smooth 20 -outfile $updir/thumb_$filename" );
>>>명령을 실행했는데도..
>>>위의 thumbnail이미지가
생성되긴 생성됐는데 사이즈가 0바이트로 돼 있네요..
>>>
>>>참고로 위의 게시판썸네일생성하느
프로그램은..이전서버에서
잘 작동하던 거였는데 말입니다.
>>>
>>>이번에 서버새로업글하면서
레뎃9와 최신php로 설치하였는데,,
>>>그것땜시 안되나요??
>>>
>>>흐미..
>>
>>========================================
>>
>>command shell 과 PHP 가 실행되는 shell 환경이 서로 달라서 안되는
경우가 대부분입니다.
>>
>>즉 PATH 문제이거나 퍼미션 문제일 가능성이
높습니다.
>>
>>위의 djpeg 을 /usr/bin/djpeg 이렇게 절대경로로
지정하세요.
>>
>>그리고
>>
>>echo "/usr/bin/djpeg -pnm $updir/$filename >
$updir/$filename_tmp.pnm"
>>
>>이런식으로 실제 명령어를 PHP가 execute 하기 전에 한번
디버깅해 보세요
>
>========================================
>
>command shell에서는 그냥 경로안줘도 잘 실행됩니다.
>커맨드셀에서의
경로와 웹의 경로설정이 다른건지..
일반 계정과 와 nobody 또는 apache 또는 www 와 같은 특수 시스템
계정의 시스템 환경변수가 서로 다릅니다.
>그로고 게시판프로그램에서
경로지정해서 /usr/bin/djpeg로 해도 안먹는군요..
>퍼미션이라고 하셨는데 djpeg를 할려면 해당 이미지 퍼미션이
얼마이상이 돼야하는건지???
>606이상이면 되는 거 아닌건지...
>
>그리고 레뎃9이나 php4.얼마버전부터
바뀐내용인건가??
>php프로그램으로
퍼미션을 변경해주면 퍼미션이 안바뀌지요??
>업로드 후,,
>exec("chmod 707 ) ...로 모드를 변경해도 모드별정이
안바껴지던데,,
>7007이 안되고 656인가 엉뚱한 모드로 돼 있던데...??
>
파일이면 0644 (-rw-r--r--)
디렉토리이면 0755 (drwxr-xr-x)
파일이 자신의 것인것만 chmod 가 가능합니다. exec() 의 return
값으로
성공여부를 반드시 확인해 보는 것이 좋습니다.
>
>그렇다면, djpeg를 사용할 수 있는 이미지대상의 퍼미션 모드는
정해진 게 있는건지..?
>대상이 되는 jpg이미지 파일의 사이즈가 정해져 있는건지??
앞서 얘기했드시 환경변수 차이이거나
권한(퍼미션)문제입니다.
-- xxx.php ----------
<?php
...
...
if(!is_readable($updir/$filename)) echo "읽기 권한 없음";
$r = exec( "djpeg -pnm $updir/$filename > $updir/$filename_tmp.pnm" );
if(!$r) echo "실행 실패";
if(filesize("$updir/$filename_tmp.pnm")<1) echo "파일생성
실패";
...
...
?>
이런식으로 exec()가 모두 끝날때까지 하나하나씩 디버깅해
보세요.
|