En este tutorial detallado, aprenderás a integrar Google reCAPTCHA v2 en tu aplicación Laravel 12 utilizando Livewire 3. Esta implementación ayudará a proteger tus formularios contra bots y spam, mejorando la seguridad de tu aplicación.
Continue Reading →Instalar multiples versiones de PHP en diferentes carpetas
Para evitar conflictos primero desinstalar php
sudo apt-get remove 'php*'
sudo apt-get purge 'php*'
Agregar el repositorio de ondrej/php
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update && sudo apt upgrade -y
Instalar el módulo fcgid de apache
sudo apt install libapache2-mod-fcgid -y
Instalar PHP 8.1 y 8.2
Continue Reading →Solución: Warning: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in
Warning: mysqli_real_connect(): The server requested authentication method unknown to the client [caching_sha2_password] in
Warning: mysqli_real_connect(): (HY000/2054): The server requested authentication method unknown to the client in
Este error me apareció al tener Mysql 8 con PHP 7.2, la razón es que MySQL 8 por defecto usa caching_sha2_password, un complemento que no es reconocido por las versiones anteriores de PHP (mysqlnd).
Solución 1: Actualizar PHP a una versión mas reciente.
Solución 2: hacer un downgrade a mysql.
Solución 3: Usar el métono de autenticación anterior explicado a continuación.
sudo nano /etc/mysql/my.cnf
Agregar al final
[mysqld]
default-authentication-plugin=mysql_native_password
Y ejecutar la consulta:
alter user 'username'@'localhost' identified with mysql_native_password by 'password';
No se puede instalar PHP en Debian
Cuando se ejecuta sudo apt-get install php7.0 aparece el error:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
php : Depends: php7.0 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Se debe ejecutar el siguiente comando para verificar que PPAs tenemos configurados:
LC_ALL=C apt policy
Si la salida es esta:
500 http://ppa.launchpad.net/ondrej/php/ubuntu disco/main amd64 Packages
release v=19.04,o=LP-PPA-ondrej-php,a=disco,n=disco,l=***** The main PPA fo r supported PHP versions with many PECL extensions *****,c=main,b=amd64
origin ppa.launchpad.net
Quiere decir que hemos roto el sistema agregando fuentes extranjeras, hay que eliminar las fuentes php del sourcelist:
cd /etc/apt/sources.list.d/
Eliminar las fuentes php:
rm ondrej-ubuntu-php-disco.list
rm ondrej-ubuntu-php-disco.list.save
rm php7.3.list
rm php7.3.list.save
Actualizar e instalar
apt-get update
apt-get install php
Y listo.
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:
Enviar mensajes a través de la API de Telegram a un Canal
A continuación como enviar mensajes a tráves de la API de Telegram a un canal:
- El canal primero debe ser público, con el fin de saber el id del canal.
- Tener un Telegram BOT.
https://api.telegram.org/bot[BOT_API_KEY]/sendMessage?chat_id=[NOMBRE_DEL_CANAL_O_ID]&text=[MENSAJE]
- BOT_API_KEY es la API Key generada por BotFather cuando se crea el bot
- NOMBRE_DEL_CANAL_O_ID nombre o id del canal
- MENSAJE el mensaje a enviar (URL-encoded) es posible usar emojis sacandolos de acá https://apps.timwhitlock.info/emoji/tables/unicode
$apiToken = "my_bot_api_token"; $data = [ 'chat_id' => '@my_channel_name', 'text' => 'Hello world!' ]; $response = file_get_contents("https://api.telegram.org/bot$apiToken/sendMessage?" . http_build_query($data) );
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
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
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]
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); }