Как сделать файл .PHP доступным только для сервера?

Я создал работу cron через контрольный центр goDaddy.

Задача cron находится в папке «cron jobs».

Я не хочу, чтобы кто-нибудь мог его запустить, как мне установить права доступа к папке, чтобы он не мог публично открываться, но он все еще может использоваться для задания cron?

Устраняет отметку «Публикация»> «Чтение», чтобы предотвратить ее запуск?

Solutions Collecting From Web of "Как сделать файл .PHP доступным только для сервера?"

Просто поместите файлы вне корневой папки 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 и отправил пользователя обратно на индексную страницу.