Как вызвать php файл

Обновлено: 07.07.2024

В PHP есть поддержка вызова одного сценария из другого. С помощью специальной конструкции языка можно вызвать сценарий из отдельного файла по его имени, также как по имени вызываются функции. Такая способность называется подключением файлов. Причём таковым файлом может являться как php-сценарий, так и любой другой текстовый файл. Например, HTML-страница.

Зачем разделять и подключать php-сценарии

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

Способы подключения файлов

Для подключения файлов в PHP есть две языковых конструкции: require и require_once . Чем же они отличаются? На самом деле, отличия между ними минимальны. Оба этих ключевых слова подключают файл с указанным именем и вызывают ошибку, если данный файл не существует.
Однако особенность работы require_once состоит в том, что файл будет подключен только один раз, даже если вызвать эту инструкцию несколько раз с одним именем файла.

Примеры подключения файлов

Для начала посмотрим, как просто подключить один сценарий внутри другого. Для этого воспользуемся инструкцией require . Предположим, у нас есть два сценария: index.php и sub.php .

Содержимое файла sub.php :

В файле index.php находится код, который подключит сценарий sub.php :

Интересный факт: require можно использовать как ключевое слово, либо как функцию.
Результат будет одним и тем же:

Результат работы:

Что произошло? Два сценария как бы склеились в один: выполнилось все содержимое sub.php и добавилось в начало сценария index.php .

О том, как работать с функцией require , подробно рассказано в этом задании.

Абсолютные и относительные пути

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

Абсолютный путь включает в себя полный адрес файла от корня диска.
Пример: /var/www/web/site/inc/sub.php

Относительный путь содержит адрес только относительно текущей рабочей директории. Так если сценарий лежит в папке /var/www/web/site , то для подключения файла можно использовать такой путь: inc/sub.php
Всегда предпочитай указывать относительные пути, чтобы сайт продолжал работать, если его переместят в другую папку.

Полезные константы

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

__DIR__ — Полный путь к директории, в которой находится текущий сценарий
__FILE__ — Полный путь к текущему сценарию

Видимость переменных в подключаемых сценариях

Следует помнить, что так как подключение файлов — это просто их склеивание в один, то и все переменные в разных сценариях тоже получают общую область видимости.
В PHP нет системы модулей, которая существует в других языках программирования (Python, Java, ECMAScript 6). Невозможно «импортировать» только отдельные переменные или функции из подключаемого сценария.
Из этого также следует, что если подключить один сценарий дважды, то переменные и функции из него тоже обьявятся повторно, а это может вызывать ошибку. Поэтому используйте require_once , чтобы такого не произошло.

Оба способа (с указыванием опции -f или без) запустят файл my_script.php . Нет ограничений, какой файл запускать, и PHP-скрипты не обязаны иметь расширение .php.

Замечание:

Если необходимо передать аргументы в скрипт, то при использовании опции -f первым аргументом должен быть -- .

Передать PHP-код напрямую в командной строке.

Необходимо быть особо осторожным при использовании этого способа, так как может произойти подстановка переменных оболочки при использовании двойных кавычек.

Замечание:

Внимательно прочтите пример: в нем нет открывающих и закрывающих тегов! Опция -r просто в них не нуждается. Их использование приведет к ошибке парсера.

Передать запускаемый PHP-код через стандартный поток ввода (stdin).

Это дает мощную возможность создавать PHP-код и скармливать его запускаемому файлу, как показано в этом (вымышленном) примере:

Как и любое другое консольное приложение, бинарный файл PHP принимает аргументы, но PHP-скрипт также может получать аргументы. PHP не ограничивает количество аргументов, передаваемых в скрипт (оболочка консоли устанавливает некоторый порог количества символов, которые могут быть переданы; обычно этого лимита хватает). Переданные аргументы доступны в глобальном массиве $argv . Первый индекс (ноль) всегда содержит имя вызываемого скрипта из командной строки. Учтите, что если код вызывается на лету из командной строки с помощью опции -r , значением $argv[0] будет просто дефис (-). То же самое верно и для кода, переданного через конвейер из STDIN.

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

Подразумевая что этот файл называется test и находится в текущей директории, можно сделать следующее:

Как можно увидеть, в этом случае не нужно заботиться о передаче параметров, которые начинаются с -.

if ( $argc != 2 || in_array ( $argv [ 1 ], array( '--help' , '-help' , '-h' , '-?' ))) ?>

Это консольный PHP-скрипт, принимающий один аргумент.

Использование:
<?php echo $argv [ 0 ]; ?> <option>

<option> Любое слово, которое вы хотели бы
напечатать. Опции --help, -help, -h,
или -? покажут текущую справочную информацию.

Для запуска приведенного примера в Unix-системе, необходимо сделать его исполняемым и просто выполнить в консоли script.php echothis или script.php -h. В Windows-системе можно создать пакетный файл:

Также можно ознакомиться с расширением Readline, которое можно использовать для усовершенствования консольного PHP-скрипта.

Основная тема статьи — выполнение PHP-файлов. Также будут вкратце рассмотрены особенности использования функции exec и тема вставки PHP в HTML .

О запуске файлов PHP

Согласно установленным правилам и SLI SAPI, существует несколько способов запуска кода на PHP. Рассмотрим три основных.

1. Указание файла для запуска

Screenshot_1-1801-360634.jpg

Два вышеописанных способа (как с опцией –f, так и без нее) выполнят запуск файла PHP my_script.php. Причем отсутствуют ограничения, какой именно файл следует запускать, то есть файлы не должны обязательно иметь расширение .php.

2. Передача PHP-кода напрямую в командной строке

Screenshot_2-1801-1c21e6.jpg

Применяя этот способ, следует быть осторожным. Дело в том, что может случиться подстановка переменных оболочки при применении двойных кавычек. Также надо обратить внимание на отсутствие закрывающих и открывающих тегов: так как опция -r в них не нуждается, в случае их применения возможны ошибки разбора.

3. Передача запускаемого PHP-кода с помощью стандартного потока ввода (stdin)

Этот способ позволяет пользователю создавать код и передавать его в запускаемый файл, как описано в примере ниже:

Screenshot_3-1801-58aec1.jpg

Также следует учесть, что комбинировать эти способы запуска нельзя.

Вставляем PHP в HTML

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

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

Чтобы понять это на примере, стоит попробовать запустить у себя файл со следующим содержимым:

Screenshot_4-1801-4dc201.jpg

Способы вставки

Чаще всего используется следующий вариант:

Данный способ имеет ряд плюсов: • не требуется дополнительная активация (способ всегда доступен); • возможно беспроблемное применение в файлах со стандартами XML и XHTML; • ввиду широкой применимости, этот метод стал, по сути, общепринятым стандартом, позволяющим вставлять скрипты, поэтому лучше используйте его.

Рассмотрим еще один вариант:

Screenshot_5-1801-4745da.jpg

Здесь тоже не нужны никакие предварительные настройки, однако на практике такая конструкция встречается реже, так как особых преимуществ она не имеет. Начиная с PHP версии 5.3, можно вставить в код лишь открывающий тег <?php. В результате всё последующее содержание кода будет интерпретироваться как скрипт:

Screenshot_6-1801-bfba3a.jpg

Этот способ прекрасно подходит при выводе больших текстовых фрагментов внутри скриптов. Он эффективнее, чем применение конструкции с echo() , print() и т. п.

Функция exec

Функция exec служит для выполнения внешней программы. Синтаксис ее работы выглядит следующим образом:

Screenshot_7-1801-370a71.jpg

Давайте рассмотрим перечень параметров: • command — команда к исполнению, то есть exec() осуществляет выполнение команды command; • output. Когда данный параметр указан, массив заполняется строками вывода программы. В данном случае завершающие пробелы в массив не включаются. Следует учесть, что если массив уже включает в себя какие-нибудь элементы, то функция добавляет в конец массива новые элементы. Но если вы этого не хотите, можно вызвать на этом массиве unset() , сделав это прежде его передачи в exec() ; • return_var. Когда аргумент return_var находится вместе с output, статус возврата команды после выполнения записывается в этой переменной.

Как запускать PHP-код

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

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

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

Результат, браузер код открывает, но исполнять его не торопится. А просто выводит какие-то куски кода обычным текстом, либо вообще ничего не выводит.

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

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

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

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


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 49 ):

Установил Denwer, всё сделал как сказано, но PHP в браузере не выводится

Файлы имеют расширение php? Сайты вообще открываются (например, HTML-код)? Если всё так, то скопируйте адрес из адресной строки и покажите его.

Большое Вам спасибо Михаил! С вашей помощью мне наконец удалось решить данную проблему.

Михаил, для меня PHP ещё тёмный лес. Как я понял, для выполнения кода PHP страница должна иметь расширение *.php. А почему тогда у вас страницы на сайте с расширением *.html?

. у меня броузер не открывает страницу с шасширением php ,а пытается сохранить ! что делать ?

Скопируйте адрес из адресной строки.

спасибо,заработало. но пшп браузер не хочет кушать ,пишет следующее: HTML1406: Недопустимое начало тега: "<?". Теги не должны начинаться с вопросительных знаков. что делать ?

Попробуйте в другом браузере.

Создаю документ с расширением php. Пишу для проверки такой php-код: <?php $a = 5; echo "$a"; ?> В браузере, если я понимаю правильно, я должен увидеть 5. и мне показывает 5 но когда я выключаю denwer и включаю и мне уже не выдает 5 а весь код выдает ??

Для работы PHP необходим denwer.

Спасибо, щас PHP код заработал.

Вам не нужно ничего менять. Изменяете файл как обычно, сохраняете (ctrl+s) и параллельно смотрите изменения в браузере, где и открыт mysite.local.

Михаил я не много не понял,файлы с кодировкой изменять или где?просто в браузере вот такое file:///Z:/home/mysite.local/www/index.php а название файлов например вот такое index.php,так как и что изменять?за ранее спасибо.

Почитайте статью. В браузере не должно быть такого адреса, это не адрес локального сервера.

Михаил какую статью прочитать?эту?,а вы можете подсказать как изменить?а то догадками как то не понятно))

Здравствуйте. пожалуйста помогите запустить файл php. сделал все строго по инструкции. в конечном итоге браузер мне пишет к сожaлению google не может открыть страницу. что делать

А у меня такая проблема. когда устанавливал Denwer - все сделал правильно. Потом начал набирать сайт по видеоуроку "основы HTML". переименовал все страницы в php. запускал сайт через mysite.local в браузере - без проблем. Теперь решил создать сайт (так сказать урок номер 2) с использованием связанного стиля CSS. но я просто удалил из папки www на сервере все файлы первого сайти и закинул туда новые, включая index.php, фаил стилей .css и т.д. Так вот теперь запускаю в браузере mysite.local, все работает, но отображается только голимый html. в чем проблема. и заново www создавал, делал все что в статьях написано - не помогает. Что делаю не так?

Обращайтесь в службу поддержки.

Стили вообще подключены? Если нет, то ошибка в коде

Да, правильно, чтобы в браузере в адресной строке было"Веб" а не "Локальный". Просто php какой-то левый. С другим пошло.

Я изменил, ссылку с под название своего сайта, но она почему то не работает? С уважением Евгений Голубев.

не дублируйте комментарии в службу поддержки и сюда.

Здравствуйте!! Вопрос такого плана, когда поменял расширения файлов html на php на сайте вместо текста сразу вылезли абракадабрики, отчего??

Возможно надо сохранить код сайта в notepad++ а сверху в пункте меню кодировка выбрать utf-8 without BOM. Также надо создать файл .htaccess и в нем прописать AddDefaultCharset UTF-8

помогите и мне пожалуйста, 1 страница именно после создания меню html и переименования php страницы в разделе меню выдает абрыкадабры, 2 страница нормально. и коды переставила, ничего не помогает. если создавать файл где конкретно и как

все в порядке, именно в первой странице в кодировке спустилась ниже и нажала преобразовать в utf-8, хотя для остальных страниц достаточно было нажать просто utf-8, может кому то будет полезным! : )

СПАСИБО УВАЖАЕМЫЙ. ОЧЕНЬ ПОМОГЛА ВАША СТАТЬЯ. из всего что нашла в инете именно ВАША спасла меня!! СПАСИБО 1000раз.

В вашем уроке по РНР с нуля до гуру я приступил к написанию движка и в результате имел много ошибок при выводе страницы. Когда я их исправил у меня вышел только пустой экран. Существует ли какойто способ проверки каждого класса на роботоспособность? Возможно ли проверять работу функций во время их написания?

Включите максимальное отображение ошибок.

Помогите пожалуйста: когда всё сделал от и до, браузер пишет веб-страница не доступна. Почему? Может какие то хост права разрешить или что то вроде этого?

Читайте также: