Запустите script.php для задания cron на сервере linux / apache, но ограничьте публичный доступ к файлу php - PullRequest
6 голосов
/ 26 ноября 2010

У меня есть этот файл script.php, который я хочу запустить как задание cron на моем сервере linux / apache.

Однако я не хочу, чтобы public обращался к www.mycompanyname.com/script.php, а также одновременно запускал сценарий.

Как мы можем предотвратить это? Как мы можем ограничить скрипт только доступом к серверу? Использует ли он chmod или устанавливает что-то внутри файла .htaccess, что-то в этом роде?

Какой совет?

Ответы [ 4 ]

9 голосов
/ 26 ноября 2010

Вы можете сделать это в качестве первой строки PHP в script.php ...

if (PHP_SAPI !== 'cli') {
    exit;
}

Если кто-то ударит по вашему сценарию через HTTP, PHP_SAPI будет cgi Я полагаю, ине cli, что приводит к немедленному завершению работы вашего скрипта.

Конечно, это зависит от того, как ваш cron вызывает php script.php.

Вы также можете отправить ...

header('HTTP/1.0 404 Not Found');

... или, конечно, оставьте его вне корневого каталога.

6 голосов
/ 26 ноября 2010

Если вы поместите скрипт за пределы папки webroot, он не будет доступен через ваш веб-сервер. например Ваш рут находится по адресу / var / www / public_html / Вы помещаете скрипт script.php вне этой папки, например: / var / www /

2 голосов
/ 26 ноября 2010

Возможно, у вас есть что-то вроде каталога public_html, в котором есть все phpsПросто поместите его за пределы этого каталога.

0 голосов
/ 31 мая 2018

Метод 1.

Если вы выполняете PHP непосредственно из задания Cron, например, php /path/to/your_script.php, добавьте следующую строку вверху вашего PHP-скрипта:

if (php_sapi_name() !='cli') exit;

Метод 2.

Если Cron Job использует wget, curl или lynx для запуска вашего скрипта через его URL, вставьте этот код вверхувашего PHP-скрипта (измените строку User Agent на известную только вам):

if ($_SERVER['HTTP_USER_AGENT'] != 'yourSecretAgent') exit;

Вам также нужно будет установить User Agent в Cron Job;как в этом примере wget:

wget -O - --user-agent=“yourSecretAgent” http://example.com/your_script.php
...