2010-12-28 10 views

उत्तर

0

यह

$handle = @fopen("/path/to/file.bin", "r"); 
if ($handle) { 
    while (!feof($handle)) { 
     $buffer[] = fgets($handle, 400); 
    } 
    fclose($handle); 
    $buffer[0][0] = chr(hexdec("FF")); // set the first byte to 0xFF 
} 
// convert array to string 
+5

पहले बाइट को 0xFF पर क्यों सेट करें? –

+0

विंडोज के तहत, यह कोड फाइलों को सादे पाठ के रूप में मानता है और संभवतः आपके द्वारा पढ़ी जाने वाली सामग्री को दूषित कर देगा। –

+1

शक्ति सिंह और अलवरो जी। विकारियो –

14

आप fread फ़ंक्शन के लिए देख रहे हैं।

fread - बाइनरी-सुरक्षित फ़ाइल को पढ़ने

उदाहरण:

$filename = "c:\\files\\somepic.gif"; 
$handle = fopen($filename, "rb"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 

नोट:

सिस्टम जो बाइनरी के बीच अंतर पर और पाठ फाइलें (यानी। विंडोज़) फ़ाइल को 'बी' फॉपेन() मोड पैरामीटर में शामिल किया जाना चाहिए।

+1

यहां महत्वपूर्ण बात यह है कि fopen() में 'b' ध्वज है। –

9

file_get_contents काफी अच्छा है की कोशिश करो। ऐसा लगता है कि यह बाइनरी मोड में फाइलें पढ़ता है। मैंने इसे जांचने के लिए एक छोटी सी PHP स्क्रिप्ट बनाई है। कोई मिस्मैच संदेश नहीं बनाया गया था।

<?php 

foreach (glob('/usr/bin/*') as $binary) { 
    $php = md5(file_get_contents($binary)); 
    $shell = shell_exec("md5sum $binary"); 
    if ($php != preg_replace('/ .*/s', '', $shell)) { 
     echo 'MISMATCH', PHP_EOL; 
    } 
    else { 
     echo 'MATCH', PHP_EOL; 
    } 
    echo $php, ' ', $binary, PHP_EOL; 
    echo $shell, PHP_EOL; 
} 

निम्नलिखित टिप्पणी manual से है:

नोट: यह समारोह बाइनरी-सुरक्षित है।

संबंधित मुद्दे