So che questa domanda è vecchia ed è già stato risposto, ma per me e gli altri, la risposta selezionata non funziona. Quello che ho trovato per funzionare è solo usando wget
. Prima di votare votarmi perché stai cercando qualcosa che non permetta visitatori esterni, ascoltami!
Se si utilizza wget
in combinazione con $this->input->ip_address();
è possibile assicurarsi che l'unica macchina che accede al proprio script sia il proprio server web. Non è buono come essere in grado di chiamare il file localmente usando php index.php controller function
, ma è un fallback.
Ecco cosa ho creato, che ha lavorato per un paio di mesi senza alcun problema:
Creare una directory da qualche parte sul server che si può semplicemente usare come appunti per i file temporanei creati da wget. Ho creato una cartella denominata cron
un livello sotto la cartella public_html
.
ex. /home/myuser/cron
Costruisci il tuo comando cron. È possibile raggruppare i comandi utilizzando &&
.
i. cd /home/myuser/cron &&
- passare alla directory zero
ii. wget http://www.site.com/cron/foo &&
- wget your file
iii. rm -f foo
- Rimuovere il file scaricato "pippo" dalla directory zero
Il comando finale sarà simile a questa:
cd /home/myuser/cron && wget http://www.site.com/cron/foo && rm -f foo
Verificare che l'indirizzo IP accedere ai file cron è uguale webserver di 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();
}
}
Importante: assicurarsi di comprendere appieno gli effetti di rm -f
. Può avere conseguenze interessanti se non si fornisce il file corretto. Se hai del tempo libero, puoi scegliere di rimuovere il file e rimuovere manualmente tutti i file cron scratch periodicamente.
Qual è la versione di CodeIgniter? – Vikk
La mia versione è 2.0.3. – MacMac
E quando accedi a strumenti/messaggi nel browser, ottieni "Hello World!" ? – imm