Я создал работу cron через контрольный центр goDaddy.
Задача cron находится в папке «cron jobs».
Я не хочу, чтобы кто-нибудь мог его запустить, как мне установить права доступа к папке, чтобы он не мог публично открываться, но он все еще может использоваться для задания cron?
Устраняет отметку «Публикация»> «Чтение», чтобы предотвратить ее запуск?
Просто поместите файлы вне корневой папки webroot / document.
В .htaccess добавьте это.
<Location /cronjobs> order deny,allow deny from all allow from 127.0.0.1 </Location>
Я включил разрешение от 127.0.0.1, поэтому его можно запустить с сервера, т. Е. Cron все еще может работать.
Поместите его в каталог и в этом каталоге создайте файл с именем .htaccess
:
<FILESMATCH "\.php$"> order deny,allow deny from all </FILESMATCH>
Теперь только сервер может обращаться к файлам PHP внутри этого каталога. Например, include
или require
.
Это полезно для того, чтобы ваш пароль MySQL был безопасным, вы можете поместить функцию соединения внутри файла PHP в этот «защищенный» каталог и включить его в свои скрипты.
Один из вариантов, который у вас есть, – использовать значения $ _SERVER, чтобы узнать, является ли это веб-запрос или запрос cli.
См. http://php.net/manual/en/reserved.variables.server.php.
Я бы посмотрел, проверяя, установлено ли значение $_SERVER['argv']
в начале вашего сценария. Если он не установлен, выйдите из сценария.
В качестве альтернативы вы можете проверить, установлен ли $_SERVER['SERVER_ADDR']
, что означает, что он выполняется веб-сервером.
Обратите внимание, что у меня нет учетной записи godaddy, чтобы проверить это, поэтому убедитесь, что вы проверили, прежде чем идти вживую.
Другое возможное решение, если файл предназначен для использования исключительно как include()
и не запускается автономно пользователем, который вводит его в URL-адрес.
Поместите этот код в начало файла, который вы хотите заблокировать.
if(basename($_SERVER['PHP_SELF']) == 'blockedFile.php') { header('Location: ./index.php'); exit(); }
PHP проверяет, является ли имя файла тем, кто запущен напрямую. Если blockedFile.php были включены в index.php с include()
то basename($_SERVER['PHP_SELF'])
будет равно index.php. Если бы он был автономным, он бы сравнил blockFile.php и отправил пользователя обратно на индексную страницу.