Foros del Web » Programando para Internet » PHP » Configuración PHP »

Solucionar bug PHP 19022 de session_start()

Estas en el tema de Solucionar bug PHP 19022 de session_start() en el foro de Configuración PHP en Foros del Web. Hola, llevo unos días con la mosca entre la oreja porque en mis servidores tengo problemas con algunos usuarios y entre ellos yo mismo que ...
  #1 (permalink)  
Antiguo 08/07/2010, 21:14
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 15 años, 2 meses
Puntos: 7
Solucionar bug PHP 19022 de session_start()

Hola, llevo unos días con la mosca entre la oreja porque en mis servidores tengo problemas con algunos usuarios y entre ellos yo mismo que generan sus sesiones con session_start() y les dan errores bastante raros.

Parece ser que al final es un bug todo de php y he creado una solución (creo) para evitar errores como:

PHP Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp/) in Unknown on line 0
PHP Warning: Unknown(): open(/tmp/sess_404b65f5a6f22fd57694ce1442af5769, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
PHP Warning: session_start() [<a href='function.session-start'>function.session-start</a>]: open(/tmp/sess_404b65f5a6f22fd57694ce1442af5769, O_RDWR) failed: No such file or directory (2)

Lo he descrito todo en un artículo en mi blog:
http://shakaran.net/blog/2010/07/sol...ion-denied-13/

El asunto es, que a ver si los más expertos del foro se os ha dado el caso y habeis encontrado otras soluciones y si veis normal que un bug asi lleve tanto tiempo sin resolver y también que si se da a alguien el problema que tenga una referencia al menos en google con la que den resultados y soluciones, porque no aparece ninguna solución buena.

Espero vuestros comentarios ;)
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net

Última edición por shakaran; 08/07/2010 a las 21:41
  #2 (permalink)  
Antiguo 08/07/2010, 21:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 11 años, 4 meses
Puntos: 1517
Respuesta: Solucionar bug PHP 19022 de session_start()

Bueno lo que veo es que dice que session.save_path tiene un directorio llamado tmp pero en el código dice que el directorio que trata de abrir es temp. Qué tienes declarado en la directiva session.save_path (te recomiendo que ingreses la dirección completa desde el root).
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/07/2010, 21:31
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Solucionar bug PHP 19022 de session_start()

Oh, ignora eso, copie mal, en realidad pone /tmp/ voy a corregirlo tambien en blog ;)

¿Aun así también te extraña tanto como a mi el error?

Lo que he visto como root en el server, es que al fichero que hace referencia, tiene como owner uno distinto y si esta creado. Por ejemplo al usuario pepito le da error, pero el usuario juanito es el owner y al juanito no le da error.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #4 (permalink)  
Antiguo 08/07/2010, 21:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 11 años, 4 meses
Puntos: 1517
Respuesta: Solucionar bug PHP 19022 de session_start()

Trata lo que te indiqué, ingresa en esa directiva la dirección completa del archivo tmp, desde el directorio principal (root), del sistema operativo. Sinceramente estoy tanteando, pero trata eso y nos dejas saber como te fue.

Edito:
Tal vez el problema es que pepito no puede leer el directorio tmp que está en la cuenta de juanito, verifica que pueda leer ese archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 08/07/2010, 21:41
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Solucionar bug PHP 19022 de session_start()

Ugh otro error, que malos son los copy & paste.

Empieza por sess_numero, actualizo el post inicial de nuevo XD

Mira aqui te pongo un ejemplo de lo que sale en el directorio /tmp de mi server (cambio los nombres de usuario por privacidad y para que sean ficticios):
# ls -ialh /tmp/sess_*
14254347 -rw------- 1 pepito pepito 44 Jul 9 03:51 /tmp/sess_00e7f77e39123f9979427adca5ab333d
14254144 -rw------- 1 pepito pepito 64 Jul 9 03:26 /tmp/sess_011829d32d0eecbd29c63e6bd5dd413d
14254571 -rw------- 1 pepito pepito 44 Jul 9 04:46 /tmp/sess_034935823445ba60efcfc5fcf930eced
14254551 -rw------- 1 juanito juanito 0 Jul 9 04:43 /tmp/sess_0472f3f53a2673b703aea99726c1340f
14254439 -rw------- 1 pepito pepito 44 Jul 9 04:17 /tmp/sess_0700622d4f5e059dc5174e91c0f50a0f
14254242 -rw------- 1 pepito pepito 64 Jul 9 03:32 /tmp/sess_07e9b82ddaabdeb66879f8cb14236db6

EDITO: El directorio tiene permisos 777 (fijate que en mi blog pongo los reportes de bugs de php y dicen lo mismo que yo)

PD: los puse mal las dos veces por que un usuario solo me puso la primera linea y las otras las saque de google ya que ahora misno no tenia ningun usuario al que le daba.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #6 (permalink)  
Antiguo 08/07/2010, 21:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 11 años, 4 meses
Puntos: 1517
Respuesta: Solucionar bug PHP 19022 de session_start()

¿Pero ya trataste de indicar la ruta absoluta en la directiva?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 08/07/2010, 21:49
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Solucionar bug PHP 19022 de session_start()

Que ruta absoluta /tmp para el session_path? esa es la que tiene por defecto en el php.ini.

Lo unico que lo ha solucionado y que he puesto en mi blog es:

Código PHP:
Ver original
  1. ini_set('session_save_path', '/home/tuusuario/tmp');
  2. session_name('tuusuario');

Es decir que el usuario que haga los session_start que antes indique el session save path en su propio directorio, le asigne un session name para que no de conflicto y ademas borre si le da error.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #8 (permalink)  
Antiguo 08/07/2010, 21:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 11 años, 4 meses
Puntos: 1517
Respuesta: Solucionar bug PHP 19022 de session_start()

Ok, pero, dentro del directorio que se supone que instalaste de PHP ¿no tienes un directorio llamado tmp? Si es así, entonces indica la ruta absoluta desde por ejemplo /home/php/tmp (digo la ruta real donde instalaste PHP) y verifica si se evita el error. Si no, pues, entiendo que lo mejor es lo que indicaste en tu blog de por cada usuario usar su propio tmp.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 08/07/2010, 22:02
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Solucionar bug PHP 19022 de session_start()

Uso Cpanel sobre Centos 5.5, que usa easyapache para instalar PHP, el php se instala en una ruta como /usr/local/bin/php los php.ini los tiene en /usr/local/lib/php.ini y por defecto el directorio que usa de temporales es /tmp como la mayoría de instalaciones PHP.
Cambiarlo a otro diferente (para todos los users) daria igual, ya que seguiria habiendo problemas, ya que PHP lo esta haciendo mal, y no asigna nombres unicos de archivos /tmp/sess_* porque se da el caso de que varios usuarios en diferentes momentos "colisionen" obteniendo el mismo fichero. De ahí el bug. Es como si usas random para generar un archivo unico, al final se te da el caso de que alguien tiene el mismo nombre de archivo que tu, por simpre probabilidad. No se si me entiendes.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #10 (permalink)  
Antiguo 08/07/2010, 22:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 14 años, 4 meses
Puntos: 2135
Tema movido desde PHP a Configuración PHP
  #11 (permalink)  
Antiguo 08/07/2010, 22:11
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 15 años, 2 meses
Puntos: 7
Respuesta: Solucionar bug PHP 19022 de session_start()

GatorV si lo quieres meter aquí, por mi bien, pero realmente no encaja en ninguno de los dos subforos, ya que es algo de PHP interno (un bug), no de su configuración (ójala y fuera tan sencillo), ni de su uso.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net

Etiquetas: bug, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:49.