У меня есть несколько файлов php, которые предназначены для запуска только из запланированной задачи. Я не хочу, чтобы кто-либо имел доступ к этим файлам, вводя URL-адрес в браузере или каким-либо другим способом ... Есть ли способ сделать этот файл доступным только для запланированных задач? Я использую панель управления plesk ...
Вы можете просто поместить рассматриваемый файл (ы) за пределы DocRoot (например, в /home/yourusername/cronscripts
вместо того /home/yourusername/public_html/cronscripts
). Тогда ваш веб-сервер не сможет получить доступ к файлам.*.
.htaccess
также является распространенным подходом и имеет преимущество перед первым вариантом работы, даже если вы не используете командную строку PHP для запуска задания. Обычно вы используете Allow
и Deny
операторы, чтобы ограничить, какой исходный IP-адрес (а) может достичь заданного фрагмента кода.
В качестве последнего варианта или если вам нужно получить доступ к сценарию из нескольких мест или мест с изменяющимися IP-адресами, рассмотрите возможность использования общего секрета с помощью кода, например:
if ( !isset($_GET['secretpass'])
|| $_GET['secretpass'] != 'hmAPcrkqjDhMkJw' )
{
//Try to be fancy ("HTTP" response is for mod_php, "Status:" is for FastCGI)
header("HTTP/1.1 404 Not Found");
header( "Status: 404 File Not Found" );
exit(0);
//Or, if you'd rather, you can just:
die( "Unauthorized access." );
}
Затем, когда вы вызываете скрипт, только вы знаете правильный параметр, который нужно прикрепить к концу (http://somehost.com/somescript.php?secretpass=hmAPcrkqjDhMkJw).
*: Если, конечно, вы явно не настроите для этого отдельный скрипт или символическую ссылку, но сейчас мы просто педантичны.
Если ваша запланированная задача использует командную строку php, вы можете использовать htaccess, чтобы запретить доступ к каталогу, в котором находится ваш файл php (или самому файлу php).
Блок htaccess будет выглядеть примерно так:
<Files yourphpfile.php>
order allow,deny
deny from all
</Files>
Просто поместите это в файл .htaccess в каталог с вашим файлом php.
Вы хотите создать .htaccess
файл с некоторыми правилами для ограничения доступа к этим файлам. Это повлияет на Apache, когда он будет обслуживать файлы через http, но не повлияет на локальный сервер и такие вещи, как запуск php-кода для доступа к файлам.
В документации Apache есть подробности для Файлы блокируются здесь и запретить директиву здесь. Антонисомерсет избил меня до пример в его ответ.