PHP - ejecutar php desde terminal ubuntu

 
Vista:
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por stty (9 intervenciones) el 07/08/2018 16:03:04
Hola,

Tengo unos scripts que funcionan bien desde navegador, pero los quiero poner automaticos para que se lancen desde terminal, el caso es que tengo un server algo antiguo con php5 y me supone un follon actualizar a php7 ya que hay un codigo php con muchas funciones que ya dehan de funcionar en la php7, el caso es que si ejecutod e terminal me salta un error:

PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect()

y no hay manera de solventarlo instalando ningun paquete de php5 ni 7 ni 4 incluso, se que la funcion mysql_connect() es obsoleta segun PHP pero deberia alguna manera de cargar la extension de alguna manera, lo que pasa que lo desconozco...

alguna idea?

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por Alejandro (840 intervenciones) el 07/08/2018 16:19:35
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Por el error yo pensaría que en el php.ini tienes comentada la extensión php_mysql.dll
pero si en el mismo equipo corre en el explorador pero no en consola no creo que sea eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por kip (877 intervenciones) el 07/08/2018 16:38:56
Alejandro 'php_mysql.dll' es de Windows, en el caso de un SO GNU/Linux basta con instalar el paquete a traves del package manager, en Ubuntu seria:

1
sudo apt-get install php5-mysql

Y para verificar que el modulo esta correctamente instalado y cargado basta con:

1
php -m

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
$ php -m
[PHP Modules]
bcmath
bz2
Core
ctype
curl
date
dom
filter
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
SimpleXML
soap
SPL
sqlite3
standard
tokenizer
xml
xmlwriter
zip
zlib
 
[Zend Modules]

Pero creo que lo mejor es usar PDO, aunque en el caso de stty no se si le resulte viable migrar a PDO o incluso mysqli, asi que es solo un consejo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por stty (9 intervenciones) el 07/08/2018 17:07:45
Gracias por las respuestas Alejandro y kip, en efecto Alejandro, como kip comenta, mi server es un Ubuntu y las dll por desgracia no corren aquí... Por otro lado kip, lo que me pasa es que por alguna razon han dejado de ser descargables los pquetes PHP5.... nada de php5 funciona sobre mi servidor al ejecutar
1
sudo apt-get install php5-mysql
:


1
2
3
4
5
6
7
8
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
El paquete php5-mysql no está disponible, pero algún otro paquete hace referencia
a él. Esto puede significar que el paquete falta, está obsoleto o sólo se
encuentra disponible desde alguna otra fuente
 
E: El paquete php5-mysql no tiene un candidato para la instalación

y esto es lo que me tira el
1
php5-mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[PHP Modules]
calendar
Core
ctype
date
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
Phar
posix
readline
Reflection
session
shmop
sockets
sodium
SPL
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xdebug
Zend OPcache
zlib
 
[Zend Modules]
Xdebug
Zend OPcache

el problema es que hoy por hoy estamos hablando de un programa con 3 años de funcionamiento (con todas las lineas de codigo que ello supone....) pero esto la idea era que enviara correos automáticos a los usuarios.... Y si como dices es muy raro que funcione sobre navegador de forma remota y no sobre terminal en el propio server....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por xve (6935 intervenciones) el 07/08/2018 20:35:38
Hola, no indicas que versión de Ubuntu estas utilizando, pero puede ser que estes utilizando alguna de las versiones 7.x...

Revisa la versión de php que tienes instalada con:
1
php -v

Una vez sepas la versión, busca los paquetes que tengas de mysql para php con:
1
apt-cache search php mysql

En mi caso que utilizo debian, me aparecen 4 versiones...
php7.0-mysql
php7.1-mysql
php7.2-mysql
php7.3-mysql
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por stty (9 intervenciones) el 08/08/2018 08:51:41
Gracias por la repuesta xve, estoy utilizando php5.6 sobre ubuntu 16.4, estos son los modulos mysql que me tira al con:
1
apt-cache search php mysql

1
2
3
4
5
php-mysql - MySQL module for PHP [default]
php5.6-mysql - MySQL module for PHP
php7.0-mysql - MySQL module for PHP
php7.1-mysql - MySQL module for PHP
php7.2-mysql - MySQL module for PHP

Pero la 7.x las desactivé en su día (o seo creía antes de ejecutar el comando php -v....), el caso es que antes de desactivar la 7.x algunas funciones php no corrian en navegador por eso hice el downgrade... (no recuerdo si una de ellas era mysql_connect() o no) Pero la respuesta que me tira el comando php -v es un php 7.2.8, puede ser que por alguna razón en navegador este corriendo la versión 5.6 mientras que "nativamente" si haces una llamada con el comando PHP en terminal este trabajando con otra? Es raro pero no se me ocurre otra.... esto es lo que me tira con el php -v:

1
2
3
4
5
PHP 7.2.8-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Jul 25 2018 10:51:50) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.8-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans

EDITO:
haciendo un info() en el navegador, sale esto:
https://we.tl/dEhP9aQJPc
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por stty (9 intervenciones) el 08/08/2018 11:24:38
con mi propia respuesta acabo de dar con el problema jajaja

hace algo mas de año y medio que migre toda la pagina a otro server y por defecto venia la php7.0 pero como me crasheaban algunas funciones de php, por no volverme loco actualizando el codigo de TODO el sitio, busque un comando para downgradear a la 5.6 y así hacer correr funciones "obsoletas" para php7 sobre el navegador, el caso es que el comando que utilicé (por lo que entiendo), solo servia para que apache buscara la ruta por defecto de php5 en vez de 7 pero el comando PHP de consola seguia haciendo referencia a php7, así pues, si lanzaba desde terminal:

1
php /ruta/de/mi /fichero.php

internamente lo lanzaba con php7 con lo cual, y lógicamente, me decía que la función mysql_connect() no corre (ni correrá jamas....) lo he solventado con algo muy simple, lanzando el comando:

1
php5.6 /ruta/de/mi /fichero.php

de esta manera ejecuta el script PHP con la versión correcta donde la función existe y va a la perfección!

Seguramente en algún sitio de la configuración del PHP, se le puede dar la ruta correcta a la versión del servicio PHP que nos interesa para ser lanzado desde consola con el comando simple, pero como solamente lo necesito para hacer un simple script de envío y esto ya me corre, no es algo prioritario ya que eso va automatizado y me da igual lanzar un comando u otro, lo hará la maquina sola ;P

Nada más, muchísimas gracias por la ayuda,
un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por Gonzalo (615 intervenciones) el 09/08/2018 02:01:37
buenos dias don stty.

mi recomendación es que actualices a php7, php5 tiene algunas debilidades que ya fueron corregidas en la versión 7.

y actualice su acceso a mysql usando PDO, es mas seguro.

yo también estuve en php4 y fue un lio hacer el cambio de controlador de MySql a php5, así que lo que hice fue crear un objeto que me ayudara a controlar la conexión a mysql, así que cuando cambie a php7 y de mysqli a PDO fue mucho mas fácil ya que todo se controlaba desde la clase, solo adapte la clase y todas las paginas funcionaron igual como si no se hubiera hecho ningún cambio.

si le interesa vea mis post, en alguno puse la clase para controlar la base de datos como objeto.

cualquier duda avíseme.

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

ejecutar php desde terminal ubuntu

Publicado por Stty (9 intervenciones) el 09/08/2018 08:28:15
Ok, si, lo se, lo revisaré, se que lo tengo que actualizarlo y de hecho era mi intención, el tema es que esto me corria bastante prisa y necesitaba resolver el problema, ahora que de momento está en funcionamiento, con más calma puedo intentar actualizar el codigo :)

Muchas gracias gonzalo, revisaré tus post ;)
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar