Как обращаться со сжатыми bz2 руководствами под Windows?
Если у вас нет архиватора для работы с bz2 файлами, то
» скачайте утилиту для
командной строки от Redhat (пожалуйста, ищите подробности ниже).
Если вы не хотите использовать утилиту командной строки, вы можете
попробовать бесплатные средства, такие как
» Stuffit Expander,
» UltimateZip,
» 7-Zip или
» Quick Zip.
Если у вас есть такие утилиты как » WinRAR
или » Power Archiver, то
с их помощью вы можете легко распаковать bz2 файлы.
Если вы пользуетесь Total Commander (бывший Windows Commander),
подключаемый модуль bz2 для этой программы доступен бесплатно с
сайта » Total Commander.
Утилита командной строки bzip2 от Redhat:
Пользователи Win2K Sp2 должны взять последнюю версию 1.0.2,
пользователи всех других Windows должны взять версию 1.00.
После загрузки переименуйте исполняемый файл в bzip2.exe.
Для удобства положите его в директорию в вашем пути, например C:\Windows,
где C соответствует диску, на котором установлен ваш Windows.
Замечание: lang обозначает ваш язык и x - желаемый формат, например pdf.
Чтобы распаковать php_manual_lang.x.bz2, следуйте этим простым
инструкциям:
откройте окно c командной строкой (command prompt)
перейдите в директорию (команда cd), куда вы сохранили скачанный php_manual_lang.x.bz2
вызовите bzip2 -d php_manual_lang.x.bz2 для извлечения
php_manual_lang.x в ту же директорию
В случае, если вы скачали php_manual_lang.tar.bz2, содержащий множество
html файлов, процедура точно такая же. Единственное отличие заключается в том,
что вы получили файл php_manual_lang.tar. Известно, что формат tar
обрабатывается большинством распространённых архиваторов под Windows,
например такими как » WinZip.
Что означает & рядом с аргументом в объявлении функции, например
asort()?
Это означает, что аргумент
передаётся по ссылке
и функция, вероятно, изменит его согласно документации.
Таким путём вы можете передать только переменные и вам не обязательно
задавать & при вызове функции (и это даже
не рекомендуется).
Как обращаться с register_globals?
Для информации по проблемам безопасности, связанных с
register_globals, читайте
Использование register_globals
в главе "Безопасность".
Предпочтительнее использовать
superglobals,
чем полагаться на то, что register_globals
установлена в On.
Если вы пользуетесь виртуальным (shared) хостингом с выключенной
register_globals и вам надо использовать некоторые
существующие приложения, которые требуют, чтобы эта опция была включена;
или вы на каком-либо сервере, где эта возможность включена, но вы хотите
эмулировать проблему по безопасности, то возможно вам надо эмулировать
противоположную установку с помощью PHP.
Всегда лучше сначала спросить, если можно каким-либо образом изменить опцию
в конфигурации PHP, но если это невозможно, то вы можете воспользоваться
следующими совместимыми кусками кода.
Пример #1 Эмулирование Register Globals
Следующее эмулирует register_globals установленную в On. Если вы
меняли директиву variables_order,
измените соответственно и $superglobals.
<?php // Emulate register_globals on if (!ini_get('register_globals')) { $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET); if (isset($_SESSION)) { array_unshift($superglobals, $_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal, EXTR_SKIP); } } ?>
Следующее эмулирует register_globals установленную в Off. Помните,
что этот код должен вызываться в самом начале вашего скрипта, или
после вызова session_start(), если вы используете
сессии.
<?php // Emulate register_globals off function unregister_GLOBALS() { if (!ini_get('register_globals')) { return; }
// Might want to change this perhaps to a nicer error if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) { die('GLOBALS overwrite attempt detected'); }
// Variables that shouldn't be unset $noUnset = array('GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES');