Author: jaime

  • Conectar Codeigniter con MSSQL en Ubuntu

    A continuación muestro como conectar codeigniter con mssql en ubuntu

    Para ubuntu 14 con php5

    apt-get install unixodbc freetds freetds-dev tdsodbc php5-odbc

    Para Ubuntu 16 con php7

    apt-get install unixodbc freetds-common freetds-dev tdsodbc php7.0-odbc

    Reiniciar Apache

    service apache2 restart

    Editar /etc/freetds/freetds.conf

    [nombre-servidor]
    host = 192.168.10.10
    port = 1433
    tds version = 7.3

    La version TDS 7.3 es para SQL Server 2008, para ver un listado de los protocolos visitar este link

     

    Editar /etc/odbcinst.ini 

    [TDS]
    Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    Description = FreeTDS driver
    Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

     

    Editar /etc/odbc.ini

    [mi-servidor]
    Driver = TDS
    Description = Descripcion 
    ServerName = nombre-servidor
    Database = bd_ejemplo

    El ServerName es el nombre del servidor en el archivo de configuración freetds.conf, en el archivo de configuración de codeigniter debe tener algo así:

    $db['mssql'] = array(
    'dsn' => '',
    'hostname' => 'dsn=my-server;uid=myusername;pwd=mypassword',
    'username' => '',
    'password' => '',
    'database' => 'MyDatabase',
    'database' => '',
    'dbdriver' => 'odbc',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
    );

    y se llama de esta forma:

    class Prueba_Model extends CI_Model{
    	public function __construct(){
    	parent::__construct();
    	$this->pruebadb = $this->load->database('mssql', true);
    }

     

  • setlocale no funciona – PHP

    setlocale no funciona – PHP

    La función setlocale() no funciona al setearlo con el idioma deseado en este caso el español.

    El primer paso es consultar si se encuentra instalado en el sistema, ingresando en la terminal el comando:

    locale -a

    (more…)

  • PHP Warning: file_put_contents(TelegramException.log): failed to open stream: Permission denied in …/vendor/longman/telegram-bot/src/Exception/TelegramException.php on line 24

    Luego de revisar la línea 24 del archivo al que hace referencia, se puede observar que trata de escribir y añadir un log.

    namespace Longman\TelegramBot\Exception;
    
    class TelegramException extends \Exception
    {
    
        public function __construct($message, $code = 0)
        {
            parent::__construct($message, $code);
    
            $path = 'TelegramException.log';
            $status = file_put_contents(
                $path,
                date('Y-m-d H:i:s', time()) .' '. self::__toString() . "\n",
                FILE_APPEND
            );
    
        }
    }
    

    Pero no tiene permisos de hacerlo. Por lo que hay que darselos a la carpeta en donde se encuentra el archivo php que se esta ejecutando

    chmod 777 [carpeta donde se esta ejecutando el script php]

     

  • Cacti no grafica

    En mi caso me quedé sin espacio en disco. Luego cacti dejó de graficar. El problema se encuentra en que se daña una tabla llamada poller_output. Hay que borrarla y volverla a generar con la siguiente consulta:

    DROP TABLE IF EXISTS `poller_output`;
    
    CREATE TABLE `poller_output` (
      `local_data_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
      `rrd_name` varchar(19) NOT NULL DEFAULT '',
      `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      `output` text NOT NULL,
      PRIMARY KEY (`local_data_id`,`rrd_name`,`time`) USING BTREE
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    
  • Habilitar el acceso remoto a un servidor MySql en CentOS

    Por defecto el acceso remoto a un servidor mysql viene deshabilitado. Este ejemplo aplica para CentOS

    Editamos la configuracion de mysql:

    nano /etc/my.cnf

    Buscamos la linea bind-address y se comenta con un #

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    user=mysql
    #bind-address=0.0.0.0
    

    Desde la maquina local se ingresa como usuario root para crear un usuario nuevo con acceso remoto

    mysql -h localhost -u root -p

    Se crea el usuario:

    GRANT ALL PRIVILEGES ON *.* TO 'usuarionuevo'@'localhost' IDENTIFIED BY 'contraseña' WITH GRANT OPTION;
    GRANT ALL PRIVILEGES ON *.* TO 'usuarionuevo'@'%' IDENTIFIED BY 'contraseña' WITH GRANT OPTION;
    

    Se reinicia el servicio:

    /etc/init.d/mysql restart

    Se añade la regla que permite el acceso a través del puerto 3306

    iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
    /sbin/service iptables save 

    Y listo, se realiza las pruebas:

    mysql -u usuarionuevo -h 192.168.10.50 -p password

    Opcional: para descartar que el bloqueo lo esté realizando el firewall se puede deshabilitar para realizar pruebas:

    service iptables stop

     

  • Ver la clave root de mysql en Elastix

    Digitamos:

    cat /etc/asterisk/*.conf | grep root

    En la salida se puede ver la clave

  • Controlador SATA para Windows Server 2008 de HP ProLiant ML110

    Controlador SATA para Windows Server 2008 de HP ProLiant ML110

    HP Embedded G5 SATA RAID Controller Driver for Microsoft Windows Server 2008 x64 Editions

    cp009516.exe

  • Solución: El objeto no acepta la propiedad o el método ‘AddEventListener’

    En Visual Basic 2015 al usar el herramienta WebBrowser y ejecutar un a url con codigo javascript al compilar aparece el error: El objeto no acepta la propiedad o el método ‘AddEventListener’

    addEventListener

    El error se soluciona agregando la siguiente línea en el <head> de la página a consultar:

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    Este código hace posible la compatibilidad de la página con versiones de Internet Explorer ya que WebBrowser esta usando su motor.

  • Enviar por POST en ajax

    Enviar por POST en ajax

    Una forma de ver lo que se envía por POST a través ajax en PHP es probarlo en la misma página y mostrarlo con un alert, así verificamos que lo que se va es lo deseado.

    <?php
    
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        echo '<pre>';
        print_r($_POST);
        exit; // importante!
    }
    
    ?>
    
    <form method="post" id="classic_login" action="">
        <input type="text" name="user" placeholder="Username" class="classic_field" id="user_field" />
        <input type="text" name="pass" placeholder="Password"  class="classic_field" id="pass_field" />
        <input type="submit" name="login" value="Login" class="classic_button" id="login_button" />
        <input type="submit" name="register" value="Register" class="classic_button" id="register_button" />
    </form> 
    
    
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script type="text/javascript">
    $("#classic_login").submit(function(event) {
        var formdata  = $(this).serialize();
        event.preventDefault();
    
        $.ajax({
            url: document.URL, 
            type: 'POST',
            data: formdata,
            success: function(response) { 
                alert(response); 
            }
        });
    });
    </script>

    Si es un ARRAY lo que enviamos:

    "data": {sData:sData},

    En codeigniter en el controlador lo atrapamos de esta forma

    function test(){
    	$data = $this->input->post('sData');
    	print_r($data);
    }

     

  • Dropbox can’t monitor the filesystem

    Dropbox can’t monitor the filesystem

    Cuando aparece este error es imposible copiarlo del globo de texto, a continuación el código:

    echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p