1. php 5.2/5.3 에서는
filesize('http://....');
와 같이 url open 으로 파일 크기를 알아낼 수 없습니다.
따라서 당연히 주석처리해야 하구요.
2. 그리고 5.3 으로 넘어오면서 에러메시지 출력부분이 몇가지
추가되었습니다.
즉 E_DEPRECATED 이 메시지가 5.3에서 추가되었습니다.
개발할 경우에는 error_reporting(E_ALL) 으로 설정하고
php.ini 에는
error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_STRICT
이렇게 설정해 놓은게 좋습니다.
3. 5.2 -> 5.3
http://kr.php.net/manual/en/migration53.php
http://kr.php.net/manual/en/migration53.deprecated.php
위의 두개 문서를 확인해보세요.
기존소스에서 다운로드가 안되었던 원인은 위에서 말한
에러메시지 출력부분 때문에 그렇습니다.
[고승범]님이 남기신 글:
>
>php.ini 파일에서 allow_url_fopen = On 되어있습니다.
>
>혹시 몰라 php 5.3.3 버전 서버의 php.ini 파일 첨부하였습니다.
>
>php -m 리스트입니다.
>
>apc
>bcmath
>bz2
>calendar
>Core
>ctype
>curl
>date
>dba
>dom
>enchant
>ereg
>exif
>fileinfo
>filter
>ftp
>gd
>gettext
>gmp
>hash
>iconv
>imap
>intl
>json
>ldap
>libxml
>mbstring
>memcache
>mysql
>mysqli
>odbc
>openssl
>pcntl
>pcre
>PDO
>pdo_mysql
>PDO_ODBC
>pdo_pgsql
>pdo_sqlite
>pgsql
>Phar
>posix
>pspell
>readline
>recode
>Reflection
>session
>shmop
>SimpleXML
>snmp
>soap
>sockets
>SPL
>sqlite3
>standard
>sysvmsg
>sysvsem
>sysvshm
>tidy
>tokenizer
>wddx
>xml
>xmlreader
>xmlrpc
>xmlwriter
>xsl
>zip
>zlib
>
>[Zend Modules]
>
>[산이]님이 남기신 글:
>
>>기존 소스에서 filesize() 함수 라인을 주석처리하면 정상적으로
다운로드되면
>>filesize() 함수에서 에러가 난다는 뜻입니다.
>>
>>php.ini 파일에서
>>
>>allow_url_fopen = On
>>
>>으로 설정되어 있는지 확인해보세요.
>>
>>
>>[고승범]님이 남기신 글:
>>
>>>답변 주셔서 정말 감사합니다.
>>>
>>>curl 모듈은 올라와 있었구요, 3번의 filesize 부분 주석처리
하니 정상적으로 파일 다운로드가 되었습니다.
>>>
>>>php 5.2에서는 되지만 5.3에서는 작동하지 않는 원인도 좀 알 수
있을까요?
>>>
>>>참고할만한 링크라도 알려주시면 감사하겠습니다.
>>>
>>>
>>>[산이]님이 남기신 글:
>>>
>>>>아마 5.2 에서 5.3 으로 넘어오면서 에러메시지 출력부분
설정이 조금 안된것 같네요.
>>>>(error_reporting)
>>>>
>>>>1. eregi() 함수는 5.3 에서 사용은 가능하나 향후에
없어질거라고 메시지를 뿌려집니다.
>>>>따라서 eregi 함수 대신 preg_match() 함수를 써야
합니다.
>>>>
>>>>2. curl 모듈이 올라와 있는지 체크
>>>>
>>>>shell> php -m
>>>>
>>>>PHP 5.3 의 yum 에는 curl 모듈이 없는것 같네요.
>>>>수동으로 설치가 가능하지만 조금 복잡합니다.
>>>>
>>>>같은 버전 php 소스를 받아서 압축을 풀고
>>>>
>>>>yum -y curl-devel
>>>>./configure --disable-all --with-curl=shared
>>>>make
>>>>ls -al modules/curl.so
>>>>
>>>>curl.so 가 만들어졌으면 php.ini 파일에서 extension_dir 로 설정된
디렉토리에
>>>>curl.so 를 복사하고 extension = curl.so 추가
>>>>
>>>>그리고 php -m 으로 curl 이 모듈이 올라오면
>>>>
>>>>apachectl restart
>>>>
>>>>
>>>>3. filesize() 함수를 사용하는 header() 라인은 주석처리
>>>>
>>>>첨부파일 받아서 테스트해보세요.
>>>>
>>>>
>>>>[고승범]님이
남기신 글:
>>>>
>>>>>-----------------------------------------
>>>>>답변자가 기본적으로 참고할 내용입니다.
>>>>>- 배포판(옵션) :
>>>>>- 커널버전(옵션)
:
>>>>>- 데몬버전(예:apache
1.3.27) :
>>>>>- 데몬설치유형(RPM/컴파일/기타)
:
>>>>>-----------------------------------------
>>>>>*스팸필터링:한글
11자 이상 없으면 스팸페이지로 이동합니다.
>>>>>
>>>>>기존 웹서버를 버전업을 하여 신규 웹서버를
구성하였습니다.
>>>>>
>>>>>신규 웹 서버에서 다른 부분은 모두 정상 작동하고 있는데
php에서 파일 다운로드 창을 띠우고 파일 다운로드 시 파일이
0바이트로 다운로드 됩니다.
>>>>>
>>>>>어떤 부분을 확인해바야 하는 지 조언 부탁드리겠습니다.
>>>>>==============================================
>>>>>OLD Server
>>>>>OS : centos5.6
>>>>>apache : Apache/2.2.22 (Unix)
>>>>>php : PHP 5.2.17 (cli)
>>>>>설치방법 : 컴파일
>>>>>
>>>>>New Server
>>>>>OS : centos6.2
>>>>>apache : Apache/2.2.15 (Unix)
>>>>>php : PHP 5.3.3 (cli)
>>>>>설치방법 : yum install
>>>>>
>>>>>download.php
>>>>><?
>>>>>
>>>>> if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)",
$_SERVER["HTTP_USER_AGENT"]) && !eregi("(Opera|Netscape)",
$_SERVER["HTTP_USER_AGENT"])) {
>>>>> Header("Content-type: audio/mpeg");
>>>>> Header("Content-Disposition: attachment;
filename=enjoy.mp3");
>>>>> Header("Content-Length:".filesize("http://abc.com/enjoy.mp3"));
>>>>> Header("Content-Transfer-Encoding: binary");
>>>>> Header("Pragma: no-cache");
>>>>> Header("Expires: 0");
>>>>> flush();
>>>>> } else {
>>>>> Header("Content-type: file/unknown");
>>>>> Header("Content-Disposition: attachment;
filename=enjoy.mp3");
>>>>> Header("Content-Length:".filesize("http://abc.com/enjoy.mp3"));
>>>>> Header("Content-Transfer-Encoding: binary");
>>>>> Header("Pragma: no-cache");
>>>>> Header("Expires: 0");
>>>>> flush();
>>>>> }
>>>>>
>>>>> $ch = curl_init();
>>>>> curl_setopt( $ch, CURLOPT_URL, "http://abc.com/enjoy.mp3" );
>>>>> curl_setopt( $ch, CURLOPT_HEADER, false );
>>>>> curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
>>>>> curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5 );
>>>>> curl_setopt( $ch, CURLOPT_TIMEOUT, 5 );
>>>>>
>>>>> print curl_exec( $ch );
>>>>>?>
>>>>
>>>>========================================
>>>
>>>========================================
>>
>>========================================
>
>========================================
========================================
|