Как запустить пхп файл на компьютере. Если все хорошо
Сразу оговорюсь, что всё, о чём будет идти речь в этой статье, применимо лишь для Unix-подобных операционных систем, и не будет работать под Windows. Речь идёт именно об альтернативе крону . Несчастным любителям Windows придётся колдовать с "Планировщиком заданий" - Чёрная Магия останется недоступна для них:) Кроме того, потребуется ssh доступ, а в идеале - доступ php скриптов к командной строке.
Что есть программа-демон и как написать демона на PHP
Де́мон (daemon, dæmon, др.-греч. δαίμων божество) - компьютерная программа в системах класса UNIX, запускаемая самой системой и работающая в фоновом режиме без прямого взаимодействия с пользователем. Демоны обычно запускаются во время загрузки системы.
Применимо к PHP, это скрипт, который может работать самостоятельно, без остановок и без участия пользователя. Как получить такой скрипт? На самом деле, очень просто, нужно лишь нарушить одно из первых правил программирования, которому учат в школе, и создать бесконечный цикл:
// Чтобы программа работала постоянно, она просто должна постоянно работать;) while(1) { // Тут будет располагаться код Демона // ... // Время сна Демона между итерациями (зависит от потребностей системы) sleep(1); }
Простой до невозможности код вызывает, всё же, несколько вопросов. Как его запустить? Как отслеживать его выполнение? Как его остановить?
Как запустить php-демона
А как вообще запускают php-скрипты? Если это веб-приложение, то при помощи браузера и веб-сервера. Но этот вариант не подходит, ведь мы имеем дело с бесконечным скриптом, а время выполнения скриптов ограничены директивой max_execution_time в php.ini . Следовательно, бесконечный скрипт необходимо запускать через консоль, ведь тогда максимальное время его выполнения не учитывается . Примерно так выглядит команда запуска демона:
Php -f /path/to/your/daemon.php &
Для ручного запуска её нужно ввести в ssh терминале (putty, WinSCP и т.д.), а для запуска системой при загрузке - в соответствующий файл автозагрузки (положение и название файла зависит от операционной системы). Обратите внимание, что консольный скрипт демона запускается в фоновом режиме , не вовлекая пользователя в ожидание его завершения (ведь скрипт бесконечен). Именно в наличии возможности запустить процесс в фоновом режиме и лежит причина того, что описываемый мной способ не подходит для Windows-серверов. После запуска в консоли должен отобразиться идентификатор процесса нашего демона, так называемый PID.
Отслеживание и остановка демонов
Проверить, запущен ли процесс демона можно просто открыв список процессов в системе:
Ps -aux
Найти демона в списке процессов несложно, как по команде запуска, так и по PID:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ... root 22193 0.1 0.2 393180 72132 ? S Apr24 5:05 php -f /path/to/your/daemon.php &
Остановить процесс демона можно так же, как и любой другой процесс:
Kill xxxx
В приведённом примере xxxx - это и есть PID, идентификатор процесса.
Стоит отметить, что это не остановка, а именно "убийство" процесса демона. Дело в том, что работа скрипта будет прервана где попало, что не всегда и не всем подходит. По идее, в таком случае демона нужно останавливать где-то между его итерациями и уже не из консоли. К примеру, мы можем создать в базе данных или в каком-то файле на сервере заявку на остановку скрипта, а между итерациями демона проверять, нет ли такой заявки. Если заявка будет обнаружена, остановить цикл оператором break .
Система управления демонами
А что, если требуется создать и отслеживать сразу много демонов? К примеру, в упомянутом выше сервисе CheckTrust обработкой данных и проектов пользователей занимаются > 30 таких скриптов. Создавать и следить за ними из консоли очень неудобно - нужен более дружественный интерфейс.
Круто, да? :) Как раз для создания подобной системы было бы неплохо иметь доступ к командной строке из php. Каждый демон - запись в базе данных, напротив которой можно проставить команду его запуска, а так же PID процесса. Следовательно, появляется возможность запускать, останавливать и отслеживать статус демонов прямо из веб-интерфейса. В итоге сами демоны у меня получились частью консольного приложения, а система управления ими - частью веб-приложения.
Поскольку система, показанная выше, заточена строго под CheckTrust, её код показывать я не буду. Зато скопирую сюда код php класса для управления процессами , который я использовал при её создании:
<?php /* * Process.php * An easy way to keep in track of external processes. * Ever wanted to execute a process in php, but you still wanted to have somewhat controll of the process ? Well.. This is a way of doing it. * @compability: Linux only. (Windows does not work). * @author: Peec */ class Process{ private $pid; private $command; public function __construct($cl=false){ if ($cl != false){ $this->command = $cl; $this->runCom(); } } private function runCom(){ $command = "nohup ".$this->command." > /dev/null 2>&1 & echo $!"; exec($command ,$op); $this->pid = (int)$op; } public function setPid($pid){ $this->pid = $pid; } public function getPid(){ return $this->pid; } public function status(){ $command = "ps -p ".$this->pid; exec($command,$op); if (!isset($op))return false; else return true; } public function start(){ if ($this->command != "")$this->runCom(); else return true; } public function stop(){ $command = "kill ".$this->pid; exec($command); if ($this->status() == false)return true; else return false; } } ?>
Единственный недостаток этого класса - то, что я уже описывал ваше - он останавливает процессы методом kill, но мне пока что этого достаточно:) А вот и пример его использования:
// Запуск демона и получение PID (предполагается, что pid где-то сохраняется после запуска) $command = ""; $process = new Process($command); $processId = $process->getPid(); // Проверка статуса демона $process = new Process(); $process->setPid($processId); $status = $process->status(); // возвращает true или false // Остановка демона $process = new Process(); $process->setPid($processId); $stopped = $process->stop(); // возвращает true или false
Подводя итог, хочу сказать, что это не единственно возможная и, вполне возможно, не самая оптимальная реализация демонов на php. К примеру, для многопроцессовых демонов существует крутое расширение PHP PCNTL . Кто-то, возможно, даже скажет, что для консольных приложений существуют совсем другие языки программирования. Но, как ни крути, у данной реализации есть неоспоримые преимущества:
- Она простая , как тапок. Демон - это просто бесконечный цикл, куда уж проще.
- Она совместима с веб-приложениями - являясь частью веб-сервиса, мои демоны опираются на существующие наработки, используют те же модели данных, классы и методы работы с ними.
- Она работает! Серьёзно - некоторые демоны у нас запущены уже несколько месяцев и, будучи грамотно написанными, не тупят, не зависают, не поглощают память.
Спасибо за внимание:) Если у кого-нибудь возникнут вопросы или идеи, с удовольствием отвечу на них в комментариях.
Всех приветствую. Сегодня я начинаю писать в новую рубрику — PHP ! В основном здесь будут основы и азы этого языка. И для начала я вам расскажу, как открыть php-файл в браузере?
Почему php не открывается так, как html?
Дело вот в чем: php — это серверный язык. Html и javascript — клиентские. Соответственно, для выполнения php-кода нужно запускать сервер, только в этом случае файл можно будет открыть. Собственно, тут только 2 пути:
- Создать на реальном хостинге сайт, на котором вы будете экспериментировать с php
- Создать локальный сервер, на котором вы сможете создавать бесплатно неограниченное количество сайтов у себя на компьютере и экспериментировать сколько душе угодно.
И я всячески советую вам именно второй вариант. Соответственно, перед тем, как начать открывать php файлы, нужно поставить себе такой сервер. Только не думайте, что это тяжело — справитесь буквально за пару минут. Из самых известных локальных серверов для Windows могу выделить такие:
- OpenServer
- Denwer
- Xammp
Лично я работал только с денвером. О его установке можно было бы написать отдельно, но я решил, что ничего лучше официальной документации от разработчиков быть не может. В связи с этим, вот она . Об установке других серверов вы можете найти массу статей и видео в интернете.
Как открыть php файл после установки сервера?
Сервер установлен? Отлично, теперь у вас все есть для запуска php-файлов. Собственно, чтобы это делать, ваш локальный сервер должен быть запущен. Вот такой ярлычок у вас должен быть на рабочем столе:
Теперь вам нужно создать новый сайт для локального сервера. Опять же, я показываю только как это делать на денвере. Заходим в корневую папку сервера, тут находим папку home
. В ней будут все ваши сайты. Нужно создать новую папку, ее название и будет названием нового сайта. В созданной папке обязательно нужно создать папку www
, без этого ничего работать не будет. Последний этап — кидаем нужные php-файлы (которые нужно открыть) в папку www. Она является корневой для сайта.
Способ открытия php-файлов отличается от того, как открывать html. Вы не можете открыть их в браузере напрямую, в таком случае вы увидите только код. Чтобы открыть файл, нужно прописать сайт, на котором он находится, а также путь к файлу на сайте. Хочу подчеркнуть, что если ввести просто название сайта (без http:// , но со слешем), то сервер запустит index.php , если такой имеется.
Пример:
Я создал на локальном сервере папку phptest , в ней — www , а уже в нее закинул нужные файлы. Отлично, теперь нужно перезапустить денвер, если он у вас был запущен. Если нет, просто запускаем. Теперь в браузерной строке нужно набрать: phptest/
Так вы попадаете на главную страницу сайта. Этот файл нужно назвать index.php . Например, я создал на php калькулятор, поместил его в phptest под названием calc.php . Прописываю адрес до этого файла:
Отлично, открылся калькулятор. Можно тестировать приложение.
Как не нужно открывать php?
Это не нужно делать так, как html-файлы. То есть не через «Открыть с помощью»
— «Браузер»
. Так вы увидите только исходный код файла, но ни в коем случае не результат его выполнения.
Все, на этом мы разобрались с тем, как открыть php-файл в браузере. Достаточно один раз установить и настроить локальный сервер, и в будущем вы сможете без проблем открывать файлы этого разрешения. На этом у меня на сегодня все. Надеюсь, у вас все получилось. До встречи.
В CLI SAPI есть три различных способа запуска PHP-кода:
Передать PHP-код напрямую в командной строке.
$ php -r "print_r(get_defined_constants());"
Необходимо быть особо осторожным при использовании этого способа, так как может произойти подстановка переменных оболочки при использовании двойных кавычек.
Замечание :
Внимательно прочтите пример, в нем нет открывающих и закрывающих тегов! Опция -r просто в них не нуждается. Их использование приведет к ошибке парсера.
Передать запускаемый PHP-код через стандартный поток ввода (stdin ).
Это дает мощную возможность динамически создавать PHP-код и скармливать его запускаемому файлу, как показано в этом (ненастоящем) примере:
$ some_application | some_filter | php | sort -u > final_output.txt
Указывание конкретного файла для запуска.
$ php my_script.php $ php -f my_script.php
Оба способа (с указыванием опции -f или без) запустят файл my_script.php . Вы можете выбрать любой файл для запуска, и ваши PHP-скрипты не обязаны иметь расширение .php и могут иметь любое имя и расширение, какое вы пожелаете.
Замечание :
Если вам нужно передать аргументы вашим скриптам, то при использовании опции -f первым аргументом должен быть -- .
Как и любое другое консольное приложение, бинарный файл PHP принимает аргументы, но ваш PHP-скрипт также может получать аргументы. PHP не ограничивает количество аргументов, передаваемых в ваш скрипт (оболочка консоли устанавливает некоторый порог количества символов, которые могут быть переданы; обычно этого лимита хватает). Переданные аргументы доступны в глобальном массиве $argv . Первый индекс (ноль) всегда содержит имя вызываемого скрипта из командной строки. Учтите, что если код вызывается на лету из командной строки с помощью опции -r , значением $argv будет просто дефис (- ). То же самое верно и для кода, переданного через конвеер из STDIN .
Вторая зарегистрированная глобальная переменная - это $argc , содержащая количество элементов в массиве $argv ((а не количество аргументов, переданных скрипту).
Если передаваемые вами аргументы не начинаются с символа - , то особых проблем быть не должно. Передавая в скрипт аргумент, который начинается с - создаст проблемы, так как PHP решит, что он сам должен его обработать. Для предотвращения подобного поведения используйте разделитель списка аргументов -- . После того как этот разделитель будет прочитан PHP, все последующие аргументы будут переданы в ваш скрипт нетронутыми.
# Эта команда не запустит данный код, но покажет информацию об использовании PHP
$ php -r "var_dump($argv);" -h
Usage: php [-f]
Однако, в Unix-системах есть еще один способ использования PHP для консольных скриптов. Можно написать скрипт, первая строка которого будет начинаться с #!/usr/bin/php (при необходимости подставьте корректный путь к вашему бинарному файлу PHP CLI). После этой строки можно поместить обычный PHP-код, заключенный в открывающие и закрывающие теги PHP. Как только вы установите корректные атрибуты запуска на файл (например, chmod +x test ), ваш скрипт может быть запущен как обычный консольный или perl-скрипт:
Пример #1 Запуск PHP-скрипта как консольного
#!/usr/bin/php
var_dump
($argv
);
?>
Подразумевая что этот файл называется test и находится в текущей директории, мы можем сделать следующее:
$ chmod +x test $ ./test -h -- foo array(4) { => string(6) "./test" => string(2) "-h" => string(2) "--" => string(3) "foo" }
Как видите, в этом случае не нужно заботиться о передаче параметров, которые начинаются с - .
Исполняемый PHP-файл может использоваться для запуска PHP-скриптов независимо от веб-сервера. В случае, если вы работаете в Unix-подобной системе, вам необходимо добавить ко всем скриптам специальную первую строку и сделать их исполняемыми, чтобы указать, какая из программ должна обрабатывать эти скрипты. На Windows-платформах вы можете назначить обработчик php.exe для файлов с расширениями .php либо создать пакетный (.bat) файл для запуска скриптов посредством PHP. Строка, добавляемая в начале скрипта для Unix-систем, не влияет на их работу в ОС Windows, таким образом вы можете создавать кроссплатформенные скрипты. Ниже приведен простой пример скрипта, выполняемого из командной строки:
Пример #2 Скрипт, предназначенный для запуска из командной строки (script.php)
#!/usr/bin/php If ($argc
!=
2
||
in_array
($argv
[
1
], array("--help"
,
"-help"
,
"-h"
,
"-?"
))) { Использование: } else { В приведенном примере мы используем специальную первую строку
для указания на то, что этот скрипт необходимо запускать при помощи
PHP. Поскольку мы работаем с CLI -версией, то
HTTP -заголовки выводиться
не будут. При написании консольных приложений на PHP вам доступны две
переменные: $argc и $argv .
Первая - количество переданных аргументов плюс один (имя выполняемого скрипта).
Вторая - массив переданных аргументов, начиная с имени скрипта с нулевым
индексом ($argv). Также в приведенном примере мы проверяем количество переданных аргументов.
В случае, если их более или менее одного, а также в случае, если переданный
аргумент был --help
, -help
,
-h
или -?
, мы выводим
справочное сообщение, подставляя имя выполняемого скрипта
динамически. В обратном случае мы просто печатаем полученный аргумент. Если вы хотите выполнить приведенный пример в Unix-системе, вам
необходимо сделать его исполняемым и просто выполнить из консоли
script.php echothis
или
script.php -h
. В Windows-системе вы можете
создать для этого пакетный файл: Пример #3 Пакетный файл для запуска PHP-скрипта из командной строки (script.bat)
@echo OFF
"C:\php\php.exe" script.php %* Предполагая, что скрипт называется
script.php и полный путь к CLI
php.exe совпадает с
C:\php\php.exe , приведенный пакетный файл
запустит скрипт с переданными вами параметрами:
script.bat echothis
либо
script.bat -h
. Вы также можете ознакомиться с расширением
Readline ,
которое может быть использовано для усовершенствования
консольного PHP-скрипта. PHP является одним из наиболее популярных языков программирования в вебе. Своей популярностью он в первую очередь обязан легкости в изучении и многофункциональности. Но сфера его применения не заканчивается только на создании простых веб-страничек. PHP-скрипты можно запускать из командной строки, что позволяет писать на нем полноценные консольные приложения. Независимо от используемой операционной системы, для запуска скрипта необходимо набрать в консоли следующую команду: Php script.php
Ваша ОС может выдать сообщение о том, что команда php ей неизвестна. В таком случае, и если вы уверены, что сам интерпретатор PHP установлен корректно, поможет указание полного пути к интерпретатору во время запуска скрипта. C:\php\php.exe script.php
Для UNIX-подобных систем:
/usr/bin/php script.php
Обратите внимание, что путь к интерпретатору PHP на вашей системе может быть другим, поэтому это тоже надо учесть. Например, для пользователей популярного пакета WampServer путь может быть таким: C:\wamp\bin\php\php5.3.8\php.exe
Ну и наконец, чтобы не вводить полный путь каждый раз, следует добавить путь к интерпретатору в переменную окружения PATH вашей операционной системы. Для того, чтобы показать особенности работы скрипта из командной строки, напишем простое приложение, которое будет брать текстовый файл со ссылками и проверять код ответа сервера для каждой из этих ссылок. Причем предусмотрим возможность выбора нужного файла в интерактивном режиме, чтобы заодно узнать, как это делается. Сразу после запуска скрипт выбирает все файлы с расширением *.txt из папки files . Затем выводит данный список пользователю в формате номер => имя и ждет от пользователя ввода номера интересующего его файла. Получение всех файлов по маске делается просто, для этого воспользуемся стандартной функцией glob , а вот с чтением данных из консоли всё немного интересней. Дело в том, что после запуска скрипта из командной строки в нем открываются три стандартных потока: для вывода (STDOUT), ввода (STDIN) и ошибок (STDERR). Указатели на эти потоки доступны для скрипта в виде одноименных констант и работать с ними можно так же как, например, с обычными файлами. Таким образом, чтобы прочитать данные из консоли достаточно просто прочитать строку из потока ввода: fgets(STDIN) .
$files = glob("files/*.txt");
$files or exit("No files to check.".PHP_EOL);
echo "Files in folder: ".count($files).PHP_EOL;
foreach ($files as $index => $name) {
echo "[{$index}] => {$name}".PHP_EOL;
}
echo "Choose the file: ";
$choice = intval(fgets(STDIN));
После того, как пользователь сделал свой выбор и проверки правильности выбора, мы можем открыть файл для чтения. Array_key_exists($choice, $files) or exit("Wrong file selected.".PHP_EOL);
$file = $files[$choice];
echo "Processing file "{$file}"...".PHP_EOL;
$start_time = microtime(true);
$code_stats = array();
$f = fopen($file, "r");
С помощью цикла while начинаем перебирать все строки в файле. Строки должны быть корректными url-адресами иначе мы не сможем определить правильный код ответа сервера. Заголовки для каждого адреса получаем с помощью стандартной функции get_headers , а код ответа находится обычно в первой строке заголовка. While ($url = trim(fgets($f))) {
$headers = get_headers($url);
if (is_array($headers)) {
array_key_exists($headers, $code_stats) or $code_stats[$headers] = 0;
$code_stats[$headers]++;
echo date("H:i:s")." HTTP code "{$headers}" for url "{$url}"".PHP_EOL;
}
else {
array_key_exists("Unknown", $code_stats) or $code_stats["Unknown"] = 0;
$code_stats["Unknown"]++;
echo date("H:i:s")." Problem with url "{$url}"".PHP_EOL;
}
}
fclose($f);
В итоге после обработки файла, можно вывести небольшую статистику о том, сколько заняла обработка по времени и какие коды ответа сколько раз встречались.
$elapsed_time = round(microtime(true) - $start_time, 3);
echo "File processed in {$elapsed_time}s".PHP_EOL;
echo "Code stats are:".PHP_EOL;
print_r($code_stats);
Результатом работы такого приложения может быть, например, такой вывод:
$ php check.php
Files in folder: 1
=> files/db.txt
Choose the file: 0
Processing file "files/db.txt"...
18:33:43 HTTP code "HTTP/1.0 200 OK" for url "http://mail.ru/"
18:33:45 HTTP code "HTTP/1.1 301 Moved Permanently" for url "http://yandex.ru/"
18:33:46 HTTP code "HTTP/1.1 302 Moved Temporarily" for url "http://rambler.ru/"
18:33:47 HTTP code "HTTP/1.0 301 Moved Permanently" for url "http://google.ru/"
File processed in 5.558s
Code stats are:
Array
( => 1
=> 1
=> 1
=> 1)
Вот и всё, простое и интерактивное консольное приложение на PHP готово. Мне не хотелось писать какую-нибудь совершенно бесполезную программу, поэтому этот скрипт подходит не только для изучения, но и для использования. Например, если сохранить в текстовый файл карту сайта, то скрипт поможет определить возможные ошибки с ссылками, а если его немного доработать, то даже укажет с какими именно:). Само приложение можно скачать . В этой статье приводится пошаговое руководство по установке PHP
для совместной работы с HTTP-сервером Apache
на Windows
. Эта процедура была протестирована как на Windows XP
и Vista
. Предполагается, что вы уже завершили установку Apache
. Прежде чем приступать к работе, скачайте копию PHP 5
со страницы загрузки
. Загрузите защищенный пакет VC6
из раздела «Windows Binaries
» — то есть не скачивайте установщик. Например, выберите пакет с пометкой «PHP 5.2.5 zip package
», если на данный момент текущая версия — 5.2.5
. Примечание
: обратите внимание, что я не тестировал описанную ниже процедуру с версиями PHP 5.3
, только с 5.2.5
, которая была последней версией на момент написания статьи. Теоретически, те же действия должны выполняться и для установки PHP 7
.
Создайте на жестком диске папку для PHP
. Я предлагаю c:php
, хотя вы можете использовать другое название и расположение папки. Лично я предпочитаю не использовать имена с пробелами. Извлеките все файлы из загруженного архива в эту папку. Для этого просто дважды кликните по zip-файлу
. А затем перетащите все файлы в папку c:php
. Если вы переходите на PHP 5
с более старой версии, перейдите в каталог Windows
, (обычно это c:windows
), и удалите все файлы php.ini
, которые вы ранее там размещали. Перейдите в папку c:php
и создайте копию файла php.ini-recommended
. Назовите новый файл php.ini
. Теперь у вас должен быть файл c:phpphp.in
с содержимым, идентичным файлу c:phpphp.ini-recommended
. Примечание
. Если вы используете Apache 1
нужно либо перенести файл php.ini
в каталог Windows
(c:windows
), либо настроить переменную среды PATH
, чтобы включить в нее c:php
. Если вы не знаете, как это сделать, просто переместите файл php.ini
в папку c:windows
. Не нужно этого делать, если используете Apache 2
, так как позже мы укажем в файле конфигурации Apache 2
директиву с расположением файла php.ini
. Для установки PHP на Windows 7
c помощью текстового редактора (например, такого как «Блокнот», который можно найти в разделе «Служебные» меню «Пуск»
)? откройте файл php.ini
. Возможно, придется внести следующие изменения в файл: а) Включение коротких открывающих тегов
Найдите следующую строку: short_open_tag = Off Если для short_open_tag
задано значение off
, теги типа «» не будут считаться открывающими тегами для PHP-кода
. В таком случае, чтобы начать PHP-скрипт
, нужно будет скомпоновать скрипт с открывающим тегом типа "
Поскольку многие сторонние PHP-скрипты
используют формат «», установка для этого параметра значения off
создаст больше проблем, чем принесет пользы. Особенно, если учесть тот факт, что большинство, коммерческих хостингов, поддерживающих PHP
, без проблем обрабатывают скрипты, использующие «< ?», в качестве открывающего тега. Чтобы изменить эту установку, отредактируйте данную строку следующим образом: short_open_tag = On b) Волшебные кавычки
При установке Apache PHP
по умолчанию входящие данные автоматически не экранируются с помощью слэша. Если вы хотите, чтобы входные данные имели префикс обратной косой черты («»), например, чтобы воспроизводить настройки хостинга, найдите следующую строку: magic_quotes_gpc = Off и замените ее на: magic_quotes_gpc = On Не рекомендуется делать это, если на хостинге не задан данный параметр. Даже при установленном значении Off
вы все равно можете использовать в PHP функцию addslashes()
, чтобы добавлять слэши для конкретных частей данных,. c) Использование глобальных переменных
Ряд старых скриптов при выполнении исходят из того, что все данные, отправляемые через форму, будут автоматически иметь переменную PHP
с тем же именем. Например, если в форме есть поле для ввода с именем «something
«, старые скрипты PHP
исходят из того, что PHP-процессор
автоматически создаст переменную с именем $something
, которая содержит значение, заданное через это поле. Если вы используете такие скрипты, нужно найти следующую строку: register_globals = Off и изменить ее на: register_globals = On Предупреждение
: при установке PHP на Windows
не делайте этого, если у вас нет сторонних скриптов, для работы которых это необходимо. При написании новых скриптов лучше всегда исходить из того, что для элемента register_globals
установлено значение «Off
«. d) Отображение ошибок
На «живом
» сайте ошибки в скрипте обычно регистрируются без отображения в файле ошибок PHP
. Но на локальной машине, пока вы тестируете и отлаживаете PHP-скрипт
более удобно отправлять сообщения об ошибках при их выявлении прямо в окно браузера. Так вы не пропустите ошибки, даже если забудете проверить файл журнала ошибок. Чтобы PHP
отображал сообщения об ошибках прямо в окне браузера, найдите следующую строку: display_errors = Off и измените ее на: display_errors = On Для этого параметра на работающем сайте всегда должно быть установлено значение Off
. e) Путь сессии
Если скрипт использует сессии, найдите следующую строку: ;session.save_path = "/tmp" session.save_path
задает папку, в которой PHP
сохраняет файлы сессии. Поскольку папка /tmp
в Windows
не существует, то нужно установить другую папку. Один из способов — создать папку с именем c:tmp
(как ранее мы создали c:php
) и указать для этого параметра данную папку. Если сделаете это, измените данную строку следующим образом: session.save_path = "c:tmp" Обратите внимание, что в дополнение к изменению пути я также удалил из строки префикс точки с запятой («;»)
. Также можно использовать текущую папку TEMP
на своем компьютере. Или создайте папку tmp
в каталоге PHP
, например c:phptmp
и соответствующим образом настройте файл конфигурации. Возможных вариантов может быть много. Если вы не можете решить, какой из них выбрать, просто создайте c:php
и сделайте, как я сказал выше. f) Сервер SMTP
При установке PHP 5 5
если скрипт использует функцию mail()
, и нужно, чтобы функция успешно отправляла почту на локальном компьютере, найдите следующий раздел:
; For Win32 only.
SMTP = localhost
smtp_port = 25
; For Win32 only.
;sendmail_from = [email protected] Измените его, указав адрес вашего SMTP-сервера
и учетную запись электронной почты. Например, если ваш SMTP-сервер mail.example.com
, а адрес электронной почты [email protected]
, измените код так: SMTP = mail.example.com
smtp_port = 25
sendmail_from = [email protected] Обратите внимание, что после этого, когда скрипт попытается использовать функцию mail()
, для ее успешной работы нужно будет подключиться к своему интернет-провайдеру. Если вы не измените приведенные выше строки и попытаетесь использовать в скрипте функцию mail()
, функция вернет код сбоя и отобразит сообщение об ошибке. Существует два способа установки Apache PHP
. Первый: настроить его на загрузку PHP-интерпретатора
в качестве модуля Apache
. Второй: настроить его для запуска интерпретатора как бинарного CGI
. Нужно применять только один из них. Выберите метод модуля, если на хостинге PHP
также установлен, как модуль Apache
, или используйте метод CGI
, если он реализован на хостинге. a) Запуск PHP 5 в качестве модуля Apache
Чтобы настроить Apache
для загрузки PHP
в качестве модуля для анализа PHP-скриптов
, используйте текстовый редактор ASCII
, чтобы открыть файл конфигурации Apache
, httpd.conf
. Если вы используете Apache 1.x
, файл находится в папке c:Program FilesApache GroupApacheconf
. Пользователи Apache 2.0.x
могут найти его в папке C:Program FilesApache GroupApache2conf
, а пользователи Apache 2.2.x
— в папке C:Program FilesApache Software FoundationApache2.2conf
. Как правило, он находится в папке conf
каталога, где установлен Apache
. Найдите раздел файла с операторами LoadModule
. Объявления, перед которыми стоит символ хэша «#»
, считаются закомментированными. Если используете Apache 1.x
, добавьте следующую строку после всех операторов LoadModule
: LoadModule php5_module "c:/php/php5apache.dll" Если вы используете Apache 2.0.x
, добавьте следующую строку после всех операторов LoadModule
: LoadModule php5_module "c:/php/php5apache2.dll" Если вы используете Apache 2.2.x
, добавьте следующую строку: LoadModule php5_module "c:/php/php5apache2_2.dll" Обратите внимание, что в этом примере установки PHP
используется символ прямой косой черты («/»
) вместо традиционной обратной косой черты Windows («»)
. Это не опечатка. Если вы используете Apache 1.x
, найдите серию операторов «AddModule
» и добавьте после всех строк следующую. AddModule mod_php5.c Затем найдите в файле блок AddType
и добавьте приведенную ниже строку после последнего оператора AddType
. Это нужно сделать независимо от того, какую версию Apache
вы используете. Для Apache 2.2.x
нужно найти строки AddType
в разделе Если необходима поддержка других типов файлов, например «.phtml
», добавьте их в список, например, так: Тем, кто использует одну из версий Apache 2
, нужно указать местоположение ini-файла PHP
. Добавьте следующую строку в конец httpd.conf
. PHPIniDir "c:/php" Если вы использовали другой каталог, нужно будет изменить c:/php
на правильный путь. Не забудьте применить косую черту («/»
). Если используете Apache 1
, вы уже разместили файл php.ini
в папке Windows
или где-нибудь в PATH
. Поэтому PHP
должен будет найти его самостоятельно. Если вы настроили для PHP 5
загрузку в качестве модуля Apache
, можете пропустить данный раздел. Он предназначен для тех, кто хочет настроить для PHP
запуск в качестве бинарного CGI
. Процедура для этого при установке PHP 7
одинаковая как для Apache 1.x
, так и для всех версий серии 2.x
. Найдите часть конфигурационного файла Apache
, в которой находится раздел ScriptAlias
. Добавьте приведенную ниже строку сразу после строки ScriptAlias
для «cgi-bin
». Если используете Apache 2.2.x
, убедитесь, что строка расположена до закрытия IfModule> для раздела Обратите внимание
?>
Это консольный PHP-скрипт, принимающий один аргумент.
echo
$argv
[
1
];
}
?>
Как запустить php-скрипт из командной строки?
Пишем простой скрипт для проверки кода ответа сервера
Выводы
Этапы настройки PHP 5
1. Загрузите PHP 5
2. Установите PHP 5
3. Тем, кто обновляет пакет: Удалите старый файл PHP.INI из каталога Windows
4. Настройка PHP
Как настроить Apache для PHP 5
Запуск PHP 5 в качестве бинарного файла CGI
ScriptAlias /php/ "c:/php/"
Apache
нужно настроить MIME
тип PHP
. Найдите блок комментариев AddType
, поясняющий его использование, и добавьте следующую строку ниже него. Для Apache 2.2.x
найдите строки AddType
в разделе
AddType application/x-httpd-php .php
Как и в случае установки PHP в качестве модуля Apache , можно добавить любые расширения, чтобы Apache распознавал их как скрипты PHP , например:
AddType application/x-httpd-php .phtml
Затем вам нужно указать серверу выполнять исполняемый файл PHP каждый раз, когда он встречает скрипт PHP . Добавьте в файл следующий код, например, после блока комментариев, поясняющих «Action «.
Если вы используете Apache 2.2.x , то добавьте код сразу после инструкции AddType , описанной выше; в Apache 2.2.x нет блока комментариев «Action «.
Action application/x-httpd-php "/php/php-cgi.exe"
Примечание : часть «/php/» будет распознана как ScriptAlias , своего рода макрос, который будет расширен Apache до «c:/php/» (или «c:/Program Files/php/» , если вы установили PHP там ). Другими словами, не помещайте в эту директиву путь «c:/php/php.exe» или «c:/Program Files/php/php.exe» , а используйте «/php/php-cgi.exe» .
Если используете Apache 2.2.x , найдите следующий раздел в файле httpd.conf :
Добавьте приведенные ниже строки сразу после раздела, который только что нашли.
c) Настройка индексной страницы по умолчанию
Этот раздел относится к варианту установки PHP на Windows в качестве модуля Apache , так и двоичного CGI .
Если вы создаете файл index.php и хотите, чтобы Apache загружал его как главную страницу сайта, придется добавить еще одну строку в файл httpd.conf . Найдите строку, которая начинается с «DirectoryIndex », и добавьте «index.php » в список файлов. Например, если у вас был такой код:
DirectoryIndex index.html
измените его на:
DirectoryIndex index.php index.html
При следующем входе на веб-сервер через имя каталога, например «localhost » или «localhost/directory/ », Apache отправит все скрипты из index.php или содержимое файла index.html , если index.php недоступен.
Перезапустите веб-сервер Apache
Перезагрузите сервер Apache . Это необходимо, чтобы Apache считал новые директивы конфигурации PHP , которые вы поместили в файл httpd.conf . Сервер Apache 2.2 можно перезапустить, дважды кликнув по иконке Apache Service Monitor в панели задач и нажав в появившемся окне кнопку «Перезапустить ».
Тестирование установки PHP
После установки PHP 5 5 или другой версии языка создайте php-файл со следующей строкой:
Сохраните в каталог Apache htdocs файл с именем test.php . Если используете «Блокнот », не забудьте сохранить имя «test.php » с кавычками. Иначе программа самостоятельно добавит расширение .txt .
Откройте данный файл в браузере, введя в адресную строку «localhost / test.php » (без кавычек ). Не открывайте файл напрямую через проводник — вы увидите только код, введенный ранее. Вам нужно использовать указанный выше URL-адрес , чтобы браузер попытался получить доступ к веб-серверу Apache , который запускает PHP для интерпретации скрипта.
Если все пройдет успешно, вы увидите страницу с информацией о настройке PHP . Поздравляю — вы успешно установили PHP и настроили Apache для работы с ним. Вы можете загрузить этот же файл test.php на свой хостинг и запустить его там, чтобы узнать, как хостинг настроил PHP у себя, и попытаться воспроизвести эти настройки на своей машине.
Если это не сработает, проверьте, не выдает ли установка PHP или установка Apache ошибок. Для этого откройте окно командной строки и запустите php-cgi.exe для файла test.php , например, c:phpphp-cgi test.php .
Если вы вызвали PHP из командной строки и увидели большой HTML-файл со всей информацией о конфигурации PHP , значит, PHP настроен правильно. Вероятно, проблема связана с конфигурацией Apache . Убедитесь, что вы перезапустили Apache после внесения изменений в конфигурацию и что вы правильно настроили веб-сервер.