Как запустить PHP-скрипт на сервере: файлы, права, браузер и cron

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

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

Веб-скрипт и консольный скрипт

Веб-скрипт открывается через браузер

https://example.com/script.php

Консольный скрипт запускается на сервере через командную строку

php script.php

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

Куда загружать файл

На обычном хостинге файлы сайта лежат в публичной папке. Она может называться public_html, www, htdocs, public или совпадать с доменом. Если положить PHP-файл не туда, браузер его не увидит

Пример структуры

site-root/
  public_html/
    index.php
    script.php

После загрузки откройте файл через домен

https://example.com/script.php

Если браузер скачивает файл или показывает PHP-код как текст, сервер не выполняет PHP. Это уже проблема настройки веб-сервера, а не самого скрипта

Проверочный скрипт

Перед запуском большого файла создайте самый простой тест

<?php

echo "PHP работает";

Назовите его test.php, загрузите в папку сайта и откройте через браузер. Если текст появился, PHP работает. Если нет, сначала исправляйте окружение, а не большой скрипт

Запуск через терминал

Если у вас есть SSH-доступ, перейдите в папку со скриптом

cd /path/to/project
php script.php

Если скрипт использует относительные пути, запускать его нужно из правильной директории. Например, file_get_contents('data/input.txt') ищет файл относительно текущей рабочей папки, а не всегда относительно самого скрипта

Для надежности в PHP-коде часто используют __DIR__

<?php

$file = __DIR__ . '/data/input.txt';
echo file_get_contents($file);

Запуск по расписанию

Если скрипт должен выполняться автоматически, его ставят в cron. Пример запуска раз в час

0 * * * * /usr/bin/php /path/to/project/script.php

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

Права доступа

Для PHP-файлов на веб-сервере обычно достаточно прав на чтение. Не нужно ставить 777 на весь проект. Если скрипт должен писать в папку, права нужны именно на эту папку, а не на все файлы сайта

Пример

chmod 644 script.php
chmod 755 storage

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

Как увидеть ошибки

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

<?php

ini_set('display_errors', '1');
error_reporting(E_ALL);

Если это рабочий сайт, безопаснее включить логирование и смотреть файл ошибок. Белая страница почти всегда означает, что PHP завершился с ошибкой, но вывод ошибок скрыт

Мини-практика

Создайте test.php с выводом PHP работает, загрузите его в публичную папку сайта и откройте через браузер. Затем создайте script.php, который выводит текущую дату

<?php

echo date('Y-m-d H:i:s');

После этого запустите тот же файл из терминала командой php script.php. Так вы увидите разницу между запуском через браузер и запуском через CLI

Частые ошибки

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

Сервер скачивает PHP-файл. Значит веб-сервер не настроен на выполнение PHP

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

Скрипт работает вручную, но не работает в cron. Чаще всего не указан полный путь к PHP, не та рабочая директория или нет нужных переменных окружения

Ставят права 777 на весь сайт. Это не лечение ошибок, а риск для безопасности

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

Что почитать дальше по PHP

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

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x