2012-03-21 12 views
12

私は(私はPHPの専門家ではないです)、PHPの次のコードで奇妙なエラーメッセージを取得しています:PHP:)(未定義の関数gzdecodeに呼び出し

if ($file_loc != NULL) { 
    if (file_exists($file_loc)) { 
     printf(" file exists"); 
     $handle = fopen($file_loc, "rb"); 
     $contents = fread($handle, filesize($file_loc)); 
     fclose($handle); 
     $result = gzdecode($contents); 
    } 
} 

私は基本的にテキストコンテンツをロードしようとしていますgzippedファイルから。

Fatal error: Call to undefined function gzdecode() in ...\sites\MyScripts\fw2.php on line 80 

しかし、私はdocumentationを見てみたときに、私は余分なライブラリを含める必要がありますように、それはいないようだ、または私が間違っているのです:私は次のエラーを取得しますか?どうすればこの問題を解決できますか?このライブラリは、私のPCにインストールされているかどうかを確認するために、別のquestionに続いて

UPDATE

、答えはイエスです、そうです。 PHP情報から

<?php 

echo phpversion().", "; 

if (function_exists("gzdecode")) { 
    echo "gzdecode OK, "; 
} else { 
    echo "gzdecode no OK, "; 
} 

if (extension_loaded('zlib')) { 
    echo "zlib extension loaded "; 
} else { 
    echo "zlib extension not loaded "; 
} 

?> 

enter image description here

だからこれは私が試してみましたII

UPDATE ...より多くの混乱を得ています

と私は得る:

5.2.17, gzdecode no OK, zlib extension loaded 
+2

あるPHP以降で使用可能です面白い。 * "PHPのZlibサポートはデフォルトでは有効になっていません" *しかし* "Windows版PHPにはこの拡張機能が組み込まれているので、これらの関数を使用するために追加の拡張機能を読み込む必要はありません。 100%確かにこれは何を意味します。 Windowsまたは* NIXにいますか? – deceze

+1

私はAcquia Dev Desktopインストールを使用してWindows 7を使用しています。 – JVerstry

+0

Hm、それは*面白いです。 PHPをどのようにインストールしましたか? –

答えて

4

必ずしもインストールされていません。 the documentationから:

Zlib support in PHP is not enabled by default. You will need to configure PHP --with-zlib[=DIR]

The Windows version of PHP has built-in support for this extension. You do not need to load any additional extensions in order to use these functions.

編集:これはまだ受け入れ答えですので、私は代替として提案機能を追加するには、それを編集しました。

function gzdecode($data) { 
    return gzinflate(substr($data,10,-8)); 
} 
+0

私はチェックし、ライブラリがインストールされています... – JVerstry

+0

'function_exists'は' gzdecode'のために何を返しますか? –

+0

ライブラリはロードされていますが、関数は存在しません。私の質問に私の2番目の更新を参照してください。 – JVerstry

18

gzdecodeは、PHPがzlibに準拠していない限り利用できません。いくつかの情報源によると、PHP 6に含まれる可能性があります。マニュアルには、利用可能になった時点でどのバージョンのPHPバージョン番号が与えられているかが分かります。奇妙なことに、彼らは警告メッセージを表示する必要はないと思っています。

チェックサムなしgzdecodeのために(私のために動作します)このコードを試してみてください。

function gzdecode($data) 
{ 
    return gzinflate(substr($data,10,-8)); 
} 
+0

実際には間違っています。マニュアルは常に100%の正確さではなく、この機能はPHP5で**利用可能です**。 PHP6の機能セットは決まっていませんので、この関数が次のメジャーバージョン用に宣言されていることは前提です。 – Leigh

+0

あなたはこれをどのように証明できますか? – user1122069

+0

私の "PHP5"ではなく、これらのポスターのどれもではありませんでした! – user1122069

関連する問題