PHPerKaigi 2021



bz2 で圧縮された Windows マニュアルはどのように扱えばいいのですか?

bz2 ファイルを処理することができるアーカイバを持っていない場合、 RedHat からコマンドラインツールを » ダウンロードしてください (詳細は下記の情報を参照)。

コマンドラインツールを使いたくない場合は、» Stuffit Expander» UltimateZip» 7-Zip» Quick Zip のようなフリーのツールを使用することも可能です。 » WinRAR または » Power Archiver のようなツールを持っている場合、簡単に bz2 ファイルを解凍できます。 Total Commander(以前は Windows Commander)を使用している場合は、 bz2 用のプラグインを » Total Commander のサイトから無料で手に入れることが出来ます。

Redhat から入手可能な bzip2 コマンドラインツール:

Windows 2000 SP2 のユーザーは バージョン 1.0.2 を、他の全ての Windows ユーザーはバージョン 1.00 を使用してください。 ダウンロードしたら実行ファイルの名前を bzip2.exe へ変更してください。 そしてそれをパスの通ったディレクトリ、例えば C:\Windows(ドライブ名は貴方のシステムにあわせて適宜変更してください) へコピーしてください。

注意: lang は使用する言語を意味し、 pdf のように x は指定した形式を表します。 php_manual_lang.x.bz2 を解凍するには以下のようにします。

  • コマンドプロンプトウィンドウを開きます
  • ダウンロードした php_manual_lang.x.bz2 を保存したディレクトリに cd コマンドを使用して移動します。
  • bzip2 -d php_manual_lang.x.bz2 を実行すると php_manual_lang.x というファイルが同じディレクトリに生成されます。

分割 HTML 版アーカイブ(php_manual_lang.tar.bz2) をダウンロードした場合でも手順は同じです。 唯一の違いは、bzip2 コマンドの実行後に php_manual_lang.tar が生成されることです。 tar 形式のファイルは » WinZip といったアーカイバで扱うことができます。

add a note add a note

User Contributed Notes 3 notes

doerr at apkk dot de
10 years ago
If you only needed register_globals for get/post variables, the effictive solution for 5.3 is:
  import_request_variables("GPC", "");

But if the skripts relied on session_register() you'll have to do more:
- Replace all variables that appeared after session_register with _SESSION equivalents - so $myvar becomes $_SESSION['myvar']
- Take care if your variables appeared inside strings - 'Hello $user !' works, but 'Hello $_SESSION['user'] !' not - so you have to concatenate the string: 'Hello '.$_SESSION['user'] .' !'
- Session variables in function declarations (for whatever purpose) will not work - keeping the old (local) names will work in most cases.
- Finally, replace the session_register(..) line with session_start()
php at REMOVEMEkennel17 dot co dot uk
15 years ago
Regarding simulating register_globals = off, note that it is impossible to adequately prevent $_SESSION variables from being globalised, as the array (and thus the globals) are created on a call to session_start().  You would therefore have to 'undo' this when you start a session as using it at the start of your script will have no effect.

To avoid potential problems, use a prefix that is unique for all session variables (e.g. 'SESS_'), and only access them via the $_SESSION array.  The prefix ensures that you don't have a naming clash (and therefore a security risk) with any non-session globals.
15 years ago
Considering the comment below. I think there's a way to avoid that "problem":

// $starttime is an example of a variable that we might need to define,
// even before, running the "register_globals OFF" emulator below.
list($msec, $sec) = explode(' ', microtime());
$starttime = ((float)$msec + (float)$sec);

// If register_globals is ON, ensure no unexpected globals are defined.
// ie. We'll try to emulate a register_globals OFF environment.
if( (bool)@ini_get('register_globals') )
$superglobals = array($_ENV, $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER);
    if( isset(
array_unshift($superglobals, $_SESSION);
$knownglobals = array(
        // Known PHP Reserved globals and superglobals:
'_ENV',        'HTTP_ENV_VARS',
'_GET',        'HTTP_GET_VARS',

        // Global variables used by this code snippet:

        // Known global variables defined before this code snippet is reached.
$superglobals as $superglobal )
$superglobal as $global => $void )
            if( !
in_array($global, $knownglobals) )

Note the stuff related to the $_SESSION array depends on whether the PHP session has been started or not. You might want to call session_start() before this point (or set session.auto_start ON).

HTH+ :)
To Top