2010-11-26 1 views
5

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

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

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

Любые советы?

ответ

2

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

+0

ohh, звучит логично, о котором я никогда не думал .. я, вероятно, забыл public_html это корень, сопоставленный с именем хоста вместо внешних каталогов. Поскольку мой скрипт.php требует, чтобы apache запускался, i presumme, каталог вне public_html все еще работает? – flyclassic 2010-11-26 04:17:45

7

Вы можете сделать это в качестве первой линии 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

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

Смежные вопросы