Category: Linux

  • Solucionar error: W: GPG error: ….: The following signatures couldn’t be verified because the public key is not available:

    Al querer agregar el repositorio de php me aparece el error:

    W: GPG error: http://ppa.launchpad.net/ondrej/php/ubuntu disco InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6

    Nos muestra que la llave pública no está disponible.

    Lo que debemos hacer es buscar esta clave pública en el sistema. Obtenerla del mismo mensaje de error, al final: NO_PUBKEY 4F4EA0AAE5267A6

    y usarla con el siguiente comando:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6
    

    Y Listo.

  • Instalar drivers de Microsoft PHP para SQL Server en Ubuntu 16.04

    Instalar drivers de Microsoft PHP para SQL Server en Ubuntu 16.04

    En este tutorial veremos cómo instalar PHP para SQL Server, en este ejemplo usaremos la versión 7.0, si se desea la versión 7.2 sólo es reemplazar, usaré Ubuntu 16.04 pero  puede funcionar con otras versiones.

    sudo su 
    add-apt-repository ppa:ondrej/php -y 
    apt-get update 
    apt-get install php7.0 php7.0-dev php7.0-xml -y --allow-unauthenticated
    

    Prerequisitos:

    sudo su 
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
    
    #Download appropriate package for the OS version
    #Choose only ONE of the following, corresponding to your OS version
    
    #Ubuntu 14.04
    curl https://packages.microsoft.com/config/ubuntu/14.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
    
    #Ubuntu 16.04
    curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
    
    #Ubuntu 17.10
    curl https://packages.microsoft.com/config/ubuntu/17.10/prod.list > /etc/apt/sources.list.d/mssql-release.list
    
    exit
    sudo apt-get update
    sudo ACCEPT_EULA=Y apt-get install msodbcsql17
    # optional: for bcp and sqlcmd
    sudo ACCEPT_EULA=Y apt-get install mssql-tools
    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
    source ~/.bashrc
    # optional: for unixODBC development headers
    sudo apt-get install unixodbc-dev

    Drivers PHP para Microsoft SQL Server:

    sudo pecl install sqlsrv
    sudo pecl install pdo_sqlsrv
    sudo su
    echo extension=pdo_sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/30-pdo_sqlsrv.ini
    echo extension=sqlsrv.so >> `php --ini | grep "Scan for additional .ini files" | sed -e "s|.*:\s*||"`/20-sqlsrv.ini
    exit

    Apache:

    sudo su
    apt-get install libapache2-mod-php7.0 apache2
    a2dismod mpm_event
    a2enmod mpm_prefork
    a2enmod php7.0
    echo "extension=pdo_sqlsrv.so" >> /etc/php/7.0/apache2/conf.d/30-pdo_sqlsrv.ini
    echo "extension=sqlsrv.so" >> /etc/php/7.0/apache2/conf.d/20-sqlsrv.ini
    exit

    Reiniciar apache

    sudo service apache2 restart

    Fuente:

    https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-2017#installing-the-drivers-on-ubuntu-1604-and-1710

    https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-2017

  • Personalizar error 403

    Personalizar error 403

    En la raíz se crea el archivo .htaccess con las ip a las cuales se les permite el acceso y la url del archivo que se va a abrir si no está dentro de las ip permitidas.

    sudo nano .htaccess
    <RequireAny>
     Require ip 190.248.159.226
     Require ip 190.248.159.227
    </RequireAny>
    ErrorDocument 403 /error/403.php
    
    

    Se debe crear la carpeta error y dentro de ella su respectivo .htaccess

    <RequireAll>
        Require all granted  
    </RequireAll>

    Dentro de la carpeta error se crea el archivo 403.php con el siguiente contenido:

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1"/>
     <script src="//use.fontawesome.com/84c9ca0cf8.js"></script>
     <title>403 Acceso Denegado</title>
    
    <style type="text/css">
     @import url('//fonts.googleapis.com/css?family=Roboto');
     body {
     background: #2e739a;
     color: #D7D7D7;
     font: 16px/1.3 "Roboto", sans-serif;
     }
     header {
     width: 100%;
     margin:0px auto;
     }
     h1 {
     text-align: center;
     color:#D7D7D7;
     font: 30px/1 "Roboto";
     text-transform: uppercase;
     margin: 5% auto 5%;
     margin-bottom: 35px;
     }
    
    article { display: block; text-align: center; width: 650px; margin: 10px auto; }
    
    @media screen and (max-width: 720px) {
     article { display: block; text-align: center; width: 450px; margin: 0 auto; }
     h1 { font: 70px/1 "Roboto";}
     .wrap {margin-top: 50px;}
     }
    
    @media screen and (max-width: 480px) {
     article { display: block; text-align: center; width: 300px !important; margin: 0 auto; }
     h1 { font: 50px/1 "Roboto";}
     .wrap {margin-top: 50px;}
    
    }
     </style>
    
    <!--[if IE]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
    
    </head>
    <body>
    <div class="wrap">
     <article>
     <header>
     <h1 id="fittext1">Error 403<i class="fa fa-exclamation-triangle fa-fw"></i></h1>
     </header>
     <p id="fittext2">Acceso Denegado </br> Su IP <?php echo $_SERVER['REMOTE_ADDR']; ?> no está autorizada para ver este contenido </br> Por favor contacte al administrador</p>
     </article>
    </div>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/FitText.js/1.2.0/jquery.fittext.js"></script>
    <script type="text/javascript">
     $("#fittext1").fitText(1.1);
     $("#fittext2").fitText(1.5);
    </script>
    </body>
    </html>
  • Permitir direcciones ip desde .htaccess

    Permitir direcciones ip desde .htaccess

    Editar el archivo:

    /etc/apache2/apache2.conf

    Agregar la línea:

    <Directory /var/www/html/>
     AllowOverride All
     </Directory>

    Luego crear el archivo .htaccess:

    <RequireAny>
     Require ip 190.248.159.226
     Require ip 190.248.159.227
     </RequireAny>
    
    Se pueden extraer las ip por paises en la página https://www.ip2location.com/free/visitor-blocker
  • Powerbi: Host is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’

    Powerbi muestra el error Host ‘host_name‘ is blocked because of many connection errors. Unblock with ‘mysqladmin flush-hosts’ luego de solicitar la actualización.

    La solución es cambiar el valor predeterminado el cual es 10

    SET GLOBAL max_connect_errors=10000;

    Para consultar el cambio:

    show variables like "max_connect_errors";
  • Solución: Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX

    Al instalar Redmine  aparece el error

    Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX

    El cual se soluciona creando la base de datos con la colación correcta dada en su documentación

    CREATE DATABASE redmine CHARACTER SET utf8;

     

  • Solución: Could not find gem ‘mysql2 (~> 0.4.0)’

    Al instalar redmine en Debian 9.2 aparece el error:

    Could not find gem 'mysql2 (~> 0.4.0)' in any of the gem sources listed in your
    Gemfile or available on this machine.

    Solución:

    sudo apt-get install ruby-mysql2

    Una sugerencia que aun no he probado es instalarlo así:

    apt-get install redmine redmine-mysql

     

  • Solución: is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts

    Error: is blocked because of many connection errors; unblock with ‘mysqladmin flush-hosts

    Solución: editar el archivo my.cnf

    sudo nano /etc/mysql/my.cnf

    Cambiar el valor:

    max_connections = 1000

    Reiniciar mysql

    sudo service mysql restart

     

  • 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;