2011-10-07 119 views
0

我混淆代碼這個(我從另一個SO question得到它)通過CLI網站PHP從PHP行爲不同CLI

<?php 
$infile=$_SERVER['argv'][1]; 
$outfile=$_SERVER['argv'][2]; 
if (!$infile || !$outfile) { 
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n"); 
} 
echo "Processing $infile to $outfile\n"; 
$data="ob_end_clean();?>"; 
$data.=php_strip_whitespace($infile); 
// compress data 
$data=gzcompress($data,9); 
// encode in base64 
$data=base64_encode($data); 
// generate output text 
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>'; 
// write output text 
file_put_contents($outfile,$out); 

混淆的代碼是這樣

<?php ob_start();$a='eNq1UtFq2zAUfS/0Hy4mUItkrVdIHuaqobCUwdKnPpUxjC1fx6KaZCR5JZTt2ycpspMm3d72Zt97zrnnHl1VFSjrggksZUry5e3Nsmu78zPUWulCY6e05XKT/l4Vd+s1yWGCkn3FLdDrzP0ILhEoNFxgsUFbMCUtSmvSxKl8urrisuttEml629mVLCvhKaavjNVpUJhls49kr/am5Ru8Sd/yKU2eEvI6MmpkoVs4nncb6iT/BZNWGet3OJ24CCMrVW8/l7Y87i8ODF1c5DuhA9Cg64TmmYceDRn7c7dbAHBjkPUa3wMtsnHPATauGAcnxggXaHIZCjm43Rqjnn34RrFn1aFM3fI/dqoEZsCl/VmKWPRjCNnNuL9bP66A0qhA4BVZqyB5UJULrwRu4AtqTHLQaHstwQXZvGhuMQ2M2UFs+9VdStHr8OXrFPzfAA9RvrTuWiAdb0djWQ/C1/Msy4hz9Lc3h2A1No6eG1AY3AFCxYfUMKFM9O0QTS+Z5UqeKIRD9XM3QlWlGM483gBNXBiNck/GaZZP+I2jCRd4pLnKdDqe4yUF1upU6Tr2v034dzKNisS7irnuXQ62Tg75v/v68C9fy9vzsz+nc1ZO';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?> 

我跑的代碼在CLI上它的反應恰當,但在我的瀏覽器中,它沒有迴應任何內容,只是空白。 WAMP都是PHP 5.3.0。爲什麼它沒有在網上回應任何事情?

我也在ideone http://ideone.com/o6PAw上運行它,它工作正常。可能是什麼問題呢?

+0

也許您的CLI php配置沒有啓用輸出緩衝? –

+0

您是否檢查過任何PHP錯誤?這通常是空白頁面被回顯的原因。打開'error_reporting',並查找任何可能的錯誤。 – mc10

+0

是否打開了錯誤報告? –

回答

1

它不輸出任何內容的原因是您將所有輸出捕獲到$v,然後不做任何處理。

我不確定它爲什麼能從CLI工作,但是,因爲它當然不應該。也許,正如Frank Farmer所建議的那樣,您的PHP CLI沒有啓用輸出緩衝,所以所有的調用都會失敗。