Все о тюнинге авто

Как просмотреть в браузере файл php. Ловим попутный ветер или как запустить скрипт PHP

Отладка PHP кода выполняется самыми разными способами. Можно выводить информацию на экран, с помощью die или var_dump , с помощью файлов журнала, в которые пишутся сообщения об ошибках и предупреждения. Плохо то, что почти все перечисленные методы вносят нарушения в шаблон страниц и сообщения достаточно трудно вычленять в потоке другой информации.

Почему бы не использовать один инструмент для всех скриптов (и PHP и Javascript)? Таким инструментом может стать консоль JavaScript, которую можно использовать и для отладки PHP кода. Консоль входит в набор разработчика, который присутствует практически во всех современных браузерах по умолчанию или доступен в виде удобного дополнения. Она предоставляет собой отличный инструмент для цветного вывода с номером строки и всем, что нужно. А кроме того, можно выводить значения массивов и целых объектов в консоль.

Конечно, есть браузеры, в которых консоль отсутствует (например, IE) и инструмент отладки может нарушить процесс выполнения приложения. Но мы позаботимся, чтобы все проходило отлично.

Вот класс, который выполняет всю работу:

Class PHPDebug { function __construct() { if (!defined("LOG")) define("LOG",1); if (!defined("INFO")) define("INFO",2); if (!defined("WARN")) define("WARN",3); if (!defined("ERROR")) define("ERROR",4); define("NL","\r\n"); echo "".NL; /// Данный код предназначен для браузеров без консоли echo "if (!window.console) console = {};"; echo "console.log = console.log || function(){};"; echo "console.warn = console.warn || function(){};"; echo "console.error = console.error || function(){};"; echo "console.info = console.info || function(){};"; echo "console.debug = console.debug || function(){};"; echo ""; /// Конец секции для браузеров без консоли } function debug($name, $var = null, $type = LOG) { echo "".NL; switch($type) { case LOG: echo "console.log("".$name."");".NL; break; case INFO: echo "console.info("".$name."");".NL; break; case WARN: echo "console.warn("".$name."");".NL; break; case ERROR: echo "console.error("".$name."");".NL; break; } if (!empty($var)) { if (is_object($var) || is_array($var)) { $object = json_encode($var); echo "var object".preg_replace("~[^A-Z|0-9]~i","_",$name)." = \"".str_replace(""","\"",$object)."\";".NL; echo "var val".preg_replace("~[^A-Z|0-9]~i","_",$name)." = eval("(" + object".preg_replace("~[^A-Z|0-9]~i","_",$name)." + ")");".NL; switch($type) { case LOG: echo "console.debug(val".preg_replace("~[^A-Z|0-9]~i","_",$name).");".NL; break; case INFO: echo "console.info(val".preg_replace("~[^A-Z|0-9]~i","_",$name).");".NL; break; case WARN: echo "console.warn(val".preg_replace("~[^A-Z|0-9]~i","_",$name).");".NL; break; case ERROR: echo "console.error(val".preg_replace("~[^A-Z|0-9]~i","_",$name).");".NL; break; } } else { switch($type) { case LOG: echo "console.debug("".str_replace(""","\\"",$var)."");".NL; break; case INFO: echo "console.info("".str_replace(""","\\"",$var)."");".NL; break; case WARN: echo "console.warn("".str_replace(""","\\"",$var)."");".NL; break; case ERROR: echo "console.error("".str_replace(""","\\"",$var)."");".NL; break; } } } echo "".NL; } }

Код достаточно простой и понятный. Основная идея заключается в генерировании JavaScript кода, который выводит значения переменных и сообщения в консоль. Очень просто и эффективно.

Код, который содержится в секции для браузеров без консоли, создает пустые функции-заглушки и браузер будет выполнять скрипт, несмотря на присутствующие вызовы записи сообщений в консоль.

Теперь посмотрим на пример использования. Ниже приведенный код используется в демонстрационной странице:

// Включаем код для отладки и определяем объект require_once("PHPDebug.php"); $debug = new PHPDebug(); // Простое сообщение на консоль $debug->debug("Очень простое сообщение на консоль"); // Вывод переменной на консоль $x = 3; $y = 5; $z = $x/$y; $debug->debug("Переменная Z: ", $z); // Предупреждение $debug->debug("Простое предупреждение", null, WARN); // Информация $debug->debug("Простое информационное сообщение", null, INFO); // Ошибка $debug->debug("Простое сообщение об ошибке", null, ERROR); // Выводим массив в консоль $fruits = array("банан", "яблоко", "клубника", "ананас"); $fruits = array_reverse($fruits); $debug->debug("Массив фруктов:", $fruits); // Выводим объект на консоль $book = new stdClass; $book->title = "Гарри Потный и кто-то из Ашхабада"; $book->author = "Д. K. Роулинг"; $book->publisher = "Arthur A. Levine Books"; $book->amazon_link = "http://www.amazon.com/dp/0439136369/"; $debug->debug("Объект: ", $book);

Чтобы увидеть действие кода, надо открыть консоль JavaScript в браузере и открыть/перегрузить демонстрационную страницу.

В браузерах без консоли в коде появятся элементы div с сообщениями, а код выполнится до конца без перерывов.

От автора: Если вы когда-нибудь запускали воздушного змея, то знаете, что это не так просто, хотя со стороны кажется наоборот. На самом деле нужно приловчиться, чтобы вовремя веревку натянуть или поймать воздушную «волну». Сегодня я расскажу, как запустить скрипт PHP и какие «веревочки» дергать, чтобы он не просто работал, а «летал»!

Особенности запуска

Как уже не раз упоминалось, – это серверный язык программирования, поэтому сделать так, чтобы результат работы его кода отобразился в браузере, будет немного сложнее. Для этого файл должен располагаться непосредственно на серверном пространстве. Для работы с PHP используются два типа сервера:

Обычный (удаленный) –предоставляется хостером.

Локальный – устанавливается на клиентской машине.

На стороне хостинга, чтобы увидеть результат работы скрипта, в строку браузера вводится адрес следующего формата: ваш_сайт.ru/имя_файла.php

На локальном сервере все обстоит иначе. Перед тем, как запустим PHP скрипт в браузере, выясним эти особенности.
В зависимости от применяемого сервера набираемый адрес может отличаться. Чаще всего в «наших» краях используются различные сборки с Apache, из которых самой распространенной является Денвер.

Запуск скрипта в Denwer

В «апачевских» сборках все скрипты запускаются в localhost. Чтобы продемонстрировать это на практике, создадим какой-нибудь интересный пример. Вот его код:

< html >

< head >

< meta http - equiv = "refresh" content = "1" >

< / head >

< body >

< time style = "font-size:36px;color:rgb(102,255,102)" > < / time >

< / body >

< / html >

Разместите этот код в файле PHP и сохраните его на виртуальном диске, который создается после запуска локального сервера. У меня это файл test2.php.

Вверху на снимке обозначен путь, где нужно размещать созданный файл. У вас этот путь может немного отличаться, если при инсталляции Денвера задали другое имя виртуального диска.

Теперь разберемся, как запустить PHP скрипт на компьютере. Для этого в браузере следует указать адрес в формате: localhost/имя_файла.php

Начинаем мучиться

Может, слишком и унылое название для раздела, но я немного намучился, пока получилось открыть файл через командную строку. При попытке запуска система ПК выдавала вот такого рода ошибки:

Это странно, поскольку упоминаемые библиотеки у меня присутствовали в папке ext. Оказывается, что все дело в неправильно прописанных путях в конфигурационном файле php.ini.

В нем нужно найти раздел «Paths and Directories» и исправить путь, указанный в параметре extension_dir. Измените правые слэши на левосторонние и добавьте в начале адреса букву виртуального диска.

Если запустить PHP скрипт из CMD консоли опять не получается, тогда следует просмотреть все пути, упоминаемые в сообщении ошибки, и исправить их.

Если все хорошо

В командной строке системе нужно указать путь, где находится «экзешник» интерпретатора языка PHP. В Денвере он находится по этому пути: Z:\usr\local\php5

Здесь же расположен и глобальный файл конфигурации.

Запускаем командную строку Винды. Затем указываем системе путь к исполняемому файлу PHP. После чего задаем путь к нужному скрипту: Z:\usr\local\php5\php.exe Z:\home\localhost\www\test2.php

Но в итоге вы получите не совсем ожидаемый результат:

И все потому, что командная строка «не понимает» теги . Перед тем, как запустить PHP скрипт из командной строки, немного модифицируем код, чтобы он возвращал нам только текущее время без эффекта «часов».

Очень часто я слышу мнение, что через PHP невозможно узнать, какой браузер у пользователя , поскольку это серверный язык, а не клиентский. На самом деле, это далеко не так. Браузер - это клиент, а любой сервер имеет полное право знать информацию о клиенте, который к нему подключается, то есть о браузере. А как определить браузер через PHP , об этом Вы узнаете из этой статьи.

Для определения браузера пользователя в PHP есть массив $_SERVER , у которого есть элемент с ключом HTTP_USER_AGENT :

Вывод будет примерно таким: "Opera/9.80 (Windows NT 6.1; WOW64; U; ru) Presto/2.10.289 Version/12.02 ", если это Opera , либо таким: "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0 ", если клиент - это Firefox . И так далее, в любом браузере можно увидеть некое ключевое слово. Благодаря этому ключевому слову, без проблем удаётся однозначно определить браузер:

Вот так легко определить, какой браузер у пользователя через PHP , а дальше можно, например, подгрузить определённые стили для конкретного браузера, или даже его версии.

Данную статью я решил посветить всем начинающим изучать PHP , потому что у всех возникает одна и та же ошибка. Почему её допускают, не знаю, но допускают постоянно. Я без преувеличений скажу, что получил уже около сотни вопросов, на которые ответ будет дан в этой статье. Эта ошибка связана с неправильным запуском в PHP .

Как делают практически все новички:

  • Создают PHP-файл (иногда HTML-файл , но это самые новички).
  • Записывают туда PHP-код .
  • И двойным кликом пытаются открыть его в браузере.
  • Результат, браузер код открывает, но исполнять его не торопится. А просто выводит какие-то куски кода обычным текстом, либо вообще ничего не выводит.

    Ошибка данного подхода состоит в том, что ученик не понимает, что PHP - это серверный язык , а не клиентский. Это HTML или JavaScript клиентские языки, они, конечно, обрабатываются браузером. Но для PHP нужен интерпритатор . И вот данный интерпритатор запускается сервером.

    Вывод: запускать PHP-код надо через сервер . Если у Вас Denwer , значит, через него.

    Теперь, как запускать PHP-код через Denwer . Большинство новичков вновь делают ошибку. Они вроде бы всё делают правильно, создают нужные папки, перезапускают Denwer и вроде бы, осталось только правильно вызвать файл. Но тут снова ошибка: они вновь открывают файл просто в браузере (либо перетаскиванием файла в браузер, либо двойным кликом). Это легко можно заметить по адресу в адресной строке. Там будет что-то наподобие: file:///Z:\home\mysite.local\www\script.php .

    А правильно запускать надо, вводя адрес виртуального хоста . То есть прямо в адресной строке браузера вводите: http://mysite.local/script.php - всё, теперь скрипт запустится и выведет свой результат.

    Надеюсь, данная статья поможет многим новичкам, только начинающим изучать PHP .