Sé que esta pregunta es viejo y ya ha sido contestada, pero para mí y para otros, la respuesta seleccionada no funciona. Lo que he encontrado que funciona es solo usar wget
. Antes de que me votes porque estás buscando algo que no permita visitantes externos, ¡escúchame!
Si usa wget
junto con $this->input->ip_address();
, puede asegurarse de que la única máquina que accede al script sea su propio servidor web. No es tan bueno como poder llamar el archivo localmente usando php index.php controller function
, pero es una alternativa.
Esto es lo que he creado, que ha trabajado durante unos meses sin descendencia:
Crear un directorio en algún lugar de su servidor que sólo se puede utilizar como un bloc de notas para los archivos temporales creados por wget. Creé una carpeta llamada cron
un nivel debajo de mi carpeta public_html
.
ex. /home/myuser/cron
Construya su comando cron. Puede encadenar comandos usando &&
.
i. cd /home/myuser/cron &&
- mover a su directorio cero
ii. wget http://www.site.com/cron/foo &&
- administre su archivo
iii. rm -f foo
- Extraer el archivo descargado "foo" de su directorio cero
su comando final se verá algo como esto:
cd /home/myuser/cron && wget http://www.site.com/cron/foo && rm -f foo
Compruebe que la dirección IP para acceder a los archivos de cron es igual a su servidor web de 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: asegúrese de comprender completamente los efectos del rm -f
. Puede tener consecuencias interesantes si no proporciona el archivo correcto. Si tiene tiempo libre, puede optar por no eliminar el archivo y simplemente eliminar manualmente todos los archivos cron scratch periódicamente.
¿Cuál es su versión de CodeIgniter? – Vikk
Mi versión es 2.0.3. – MacMac
Y cuando accedes a herramientas/mensaje en el navegador, obtienes "Hello World!" ? – imm