2014-12-22 7 views
2

내가 php.net에서이 포럼에서 볼 zip 파일 안에 PHP 파일을 포함합니다. PHP은 zip 파일에서 파일을 포함 이것에 대한

사람들이 말하는

이하자 다른 PHP 파일의 압축 파일 내부에 file.php 포함

나는 모든 시간을 시도하고 오류 문서가 더

Warning: include(zip://test.zip#file.php) [function.include]: failed to open stream: No such file or directory in C:\AppServ\www\zip\zip.php on line 2 

Warning: include() [function.include]: Failed opening 'zip://test.zip#file.php' for inclusion (include_path='.;C:\php5\pear') in C:\AppServ\www\zip\zip.php on line 2 
존재 말해 없습니다

사람들이 잘 키우면 이야기하지만 나를 위해, 내가 나쁜 일을 넣어 알고하지는 또는 다른 일을해야 작동하지

답변

0

다음 코드는 문제없이 작동하는 베스트 감사합니다 :

page.php

<?php 
    include("zip://./include.zip#include_me.php"); 
?> 

include_me.php

발생하는 문제는 ZIP 파일 자체에 문제가 있음을 나타냅니다. 만드는 일반적인 실수는 ZIP 파일에 디렉토리를 포함시키고 모든 압축 파일을이 디렉토리에 포함시키는 것입니다.

ZIP 파일을 두 번 확인하여 파일과 디렉토리가 아닌 파일 만 압축되었는지 확인하는 것이 좋습니다. 디렉토리가 실수로 포함 된 경우

, 파일은 zip://./test.zip#test/file.php

+0

나는 창문에 zip 파일을 만들고,이 경우에는 다른 파일을 zip 파일에 삽입하거나, zip 파일을 외부에 포함시키기 위해 약간의 코드로 PHP에 삽입한다. 나는 너와 똑같이한다. 내게 오류를 보내십시오. Zip 파일 안에 PHP 파일이 있습니다. 포함 시키거나 포함 시키십시오. 오류가 발생했습니다. Appserv가있는 컴퓨터 서버에서 localhost로 시도해 봅니다. – Francisco

0

경고처럼 어딘가에 위치 할 수있는이 메모리에 수행 할 수 없습니다 - ZipArchive "메모리 매핑 된 파일"로 작동하지 않을 수 있습니다.

전원에 대한 책임은 있으며, 필터링되지 않은 사용자 입력이 eval()로 끝나지 않는지 확인하는 것은 각자의 책임입니다. 그것은 zip:// Stream wrapper Docs을 지원하는

file_get_contentsDocs의 변수 (메모리)에 우편 파일 내의 파일의 데이터를 획득 할 수에만 zip:// 또는 ZipArchive 통해 로컬 파일에 액세스 할 수

$zipFile = './test.zip';  # path of zip-file 
$fileInZip = 'file.php'; # name the file to obtain 

# read the file's data: 
$path = sprintf('zip://%s#%s', $zipFile, $fileInZip); 
$fileData = file_get_contents($path); 

eval($fileData); 

. 다음 사항을 염두에 두어야합니다

$zip = 'http://www.domain.com/test.zip'; 
$file = 'file.php'; 

$ext = pathinfo($zip, PATHINFO_EXTENSION); 
$temp = tempnam(sys_get_temp_dir(), $ext); 
copy($zip, $temp); 
$data = file_get_contents("zip://$temp#$file"); 
unlink($temp); 

eval($data); 

을 또는 당신은

$fp = $zip->getStream('file.php'); 
if(!$fp) exit("failed\n"); 

while (!feof($fp)) { 
    $contents .= fread($fp, 1024); 
} 

fclose($fp); 

eval($contents); 

와 스트림을 통해이를 얻을 수 있습니다 :

이를 위해 먼저 임시 파일에 내용을 복사 할 수 있으며 작업

eval()이 대답 인 경우 거의 확실하게 에 잘못된 질문을하고 있습니다.- Rasmus Lerdorf, PHP의 BDFL

+0

다른 시간과 아무런 노력없이 시도해보십시오. 경고 : file_get_contents (zip : //./test.zip#file.php) [function.file-get-contents] : 스트림을 열지 못했습니다 : C : \ AppServ \ www \ zip \ zip에 해당 파일이나 디렉토리가 없습니다. .php on line 13 – Francisco

+0

어느 것을 시도 했습니까? – ehime

관련 문제