Я знаю, что этот вопрос старый и уже был дан ответ, но для меня и других выбранный ответ не работает.То, что я нашел для работы, это просто использование wget
.Прежде чем вы проголосуете за меня, потому что вы ищете что-то, что не позволяет внешним посетителям, выслушайте меня!
Если вы используете wget
в сочетании с $this->input->ip_address();
, вы можете гарантировать, что единственная машина, получающая доступВаш скрипт - это ваш собственный веб-сервер.Это не так хорошо, как возможность локально вызывать файл с помощью php index.php controller function
, но это запасной вариант.
Вот то, что я создал, которое работало в течение нескольких месяцев без проблем:
Создайте каталог где-нибудь на вашем сервере, который вы можете просто использовать в качестве блокнота для временных файлов, созданных wget.Я создал папку с именем cron
на один уровень ниже папки public_html
.
ex./home/myuser/cron
Создайте команду cron.Вы можете объединять команды в команды, используя &&
.
i.cd /home/myuser/cron &&
- перейти в каталог с нулями
ii.wget http://www.site.com/cron/foo &&
- wget ваш файл
iii.rm -f foo
- Удалите загруженный файл "foo" из вашего рабочего каталога
Ваша последняя команда будет выглядеть примерно так:
cd /home/myuser/cron && wget http://www.site.com/cron/foo && rm -f foo
Убедитесь, что IP-адрес для доступа к файлам cron равен IP вашего веб-сервера:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Cron extends MY_Controller {
public function __construct()
{
parent::__construct();
// this controller can only be called from the IP xxx.xxx.xxx.xxx
if ($this->input->ip_address() !== 'xxx.xxx.xxx.xxx'){
show_error('Direct access is not allowed');
}
}
function foo($bar = 'bar')
{
echo $this->input->ip_address();
}
}
Внимание: убедитесь, что выполностью понять последствия rm -f
.Это может иметь интересные последствия, если вы не предоставите правильный файл.Если у вас есть свободное время, вы можете отказаться от удаления файла и просто вручную периодически удалять все файлы с нулями cron.