2011-01-03 16 views
20

cuando he subido el guión al servidor Tengo este error¿Cómo puedo solucionar el error de permiso cuando llamo a session_start()?

Advertencia: Desconocido: abierta (/ tmp/sess_58f54ee6a828f04116c2ed97664497b2, O_RDWR) falló: Permiso denegado (13) en Unknown on line 0

Advertencia: Desconocido: Error al escribir datos de sesión (archivos). Por favor, compruebe que la configuración actual de session.save_path es correcto (/ tmp) en Desconocido en línea 0

apareció el error cuando llamo session_start(); aunque establecer el permiso de la carpeta/tmp a 777.

Respuesta

9

tendrá que cambiar su session.save_path directiva de php.ini

Usted puede hacer que el uso de session_save_path

3

Además, es posible que desee utilizar ini_set('session.save_path', '/dir/here'); suponiendo que tiene acceso a esta función. Las otras formas sugeridas son válidas.

2

He tenido exactamente el mismo problema con uno de mis scripts PHP y era como lo que rompí porque funcionó perfectamente el día anterior y lo estoy ejecutando desde mi propia máquina Puppy Linux local, así que es ni siquiera un anfitrión ni nada.

Lo único que había estado haciendo antes era intentar que Java funcionara en el navegador web, así que de alguna forma logré que Java funcionara, pero se rompió PHP, ¡vaya!

De todos modos, recordé que mientras trataba de hacer funcionar Java, había eliminado el contenido de la carpeta/tmp para borrar cualquier cosa que pudiera estar causando un problema (en realidad resultó con Java, estaba usando el plugin anterior oij con el nuevo Firefox)

Para resolver este problema abrí Rox File Manager, fui a la carpeta/y hice clic derecho en el tmp folder -> Mount Point 'tmp' and clicked properties.

Me di cuenta de que los permisos se establecieron como Propietario - Lectura, Escritura, Exec, pero Grupo y Mundo solo se configuraron en Lectura y Ejecución y no en Escritura. Puse un tic en Escribir para el Grupo y el Mundo y ahora PHP funciona bien de nuevo.

No sé en qué punto deben haber cambiado los permisos para tmp, pero para que PHP los use debe tener permisos de escritura.

2

Comprueba que no estés teniendo problemas con el espacio de disco. Si todos los permisos son correctos (y 777 debería hacerlo por usted), entonces aún puede obtener este error (para algunas versiones de PHP y Apache) si no hay suficiente espacio para escribir en el disco.

5

Si tiene acceso SSH, aquí es cómo corregir los permisos y la propiedad

sudo chown -R NAME_OF_USER /tmp 

Reemplazar NAME_OF_USER por el usuario con la que se ejecuta PHP. Lo puede encontrar con sólo poner estas líneas en un archivo PHP:

$processUser = posix_getpwuid(posix_geteuid()); 
print $processUser['name']; 
exit; 
2

he tenido este problema en la situación siguiente:

  1. Llené alguna sesión de vars con PHP
  2. Mientras que la sesión fue Aún activo, cambié de PHP 5.4 a 5.3 en mi host.
  3. Al volver a cargar la página se produjo el error descrito anteriormente.
  4. Restablezca la versión de PHP a 5.4 nuevamente.
  5. used session_unset(); y session_destroy(); para limpiar la sesión actual.
  6. Cambió la versión de PHP a 5.3.
  7. Ahora funciona de nuevo.

Conclusión: Por una razón irrelevante tuve que cambiar mi versión de PHP, y mientras cambio con sesiones activas, las sesiones se corrompen.

1

Si:

  • archivos session.gc_probability> 0
  • de sesión son creados por un usuario diferente (s) (por ejemplo, la raíz y Apache).
  • archivos de sesión se almacenan en el mismo lugar (por ejemplo,/var/lib/php/sesión)

Entonces verá este error cuando, por ejemplo, el proceso Apache PHP intenta ejecutar la recolección de basura en los archivos de sesión.

Correcciones:

  1. Reconfigurar PHP por lo gc_probability es 0, y tienen una tarea programada eliminar el archivo antiguo/rancio (s).
  2. Haga que cada usuario diferente guarde sus archivos de sesión en lugares separados (session_save_path() etc).
1

si está utilizando Apache servidor web, la solución rápida es ir a la línea de comandos y escribir:

open /etc/apache2/ 

luego de abrir la ventana, abra el archivo llamado httpd.conf y la búsqueda de User o Group cambiar estas 2 líneas a:

User _www 
Group _www 

Esto se debe a que quiere que el servidor tiene permiso para los directorios de sistemas, sobre todo que WA nt para cambiar el User o puede dejar su Group en staff o admin.

1

Agregar siguiente línea

ini_set('session.save_path', getcwd() . '/tmp'); 

antes

session_start(); 
0

Para mí, el problema parece ser un error WHM! Tengo un montón de dominios agregados y todo funciona bien, pero con un subdominio trae este error.

Lo extraño, pero si uso la URL completa con el dominio principal que funciona bien:

main-domain.com/my.subdomain.com

Si utilizo el subdominio directamente Trae "Permiso denegado (13) ":

my.subdomain.com

lo es todo de raíz dominios adicionales es:

/home/xx/

Pero para mi subdominio, no sé por qué, la raíz es: (No debería tener acceso a ese directorio)

/

así que es realmente tratando de llegar:/tmp en lugar de/home/xx/tmp

que también existe, pero no tienen los permisos correctos

Para aclarar esto son ejemplos de toda la ruta:

/home/mi-cuenta/public_html

/home/mi-cuenta/tmp

/tmp

La solución que utilicé fue:

session_save_path ('/ home/mi-cuenta/tmp');

session_start();

2

Me doy cuenta de que esta es una publicación anterior, sin embargo, acabo de encontrarme con este problema y encontré una solución fácil.

Para mí, el problema estaba sucediendo con uno de mis sitios web implementados localmente. No había intentado acceder a los sitios web usando otros navegadores, pero estaba sucediendo cada vez que intenté acceder a este sitio a través de Chrome. Decidí ir a las herramientas para desarrolladores de Chrome, en la pestaña de la aplicación, y hacer clic en "Borrar almacenamiento". Voila: todo vuelve a funcionar como magia.

Espero que esto ayude a alguien más!

0

Al principio tuve este problema debido a que nginx poseía la ubicación/tmp y php-fpm se estaba ejecutando en el usuario y grupo 'apache' debido a www.conf. Cambié el usuario/grupo en ese archivo y luego funcionó bien. Es posible que desee comprobar <?php echo exec('whoami'); ?> para verificar.

0

Usando PHP 5.6 Ya había usado session_save_path() para apuntar a un directorio dentro de la estructura del dominio. Funcionó bien hasta que actualicé a PHP 7.0, en ese momento recibí el error indicado. En PHP.net encontré varios comentarios que indicaban que asignar una ruta directa no siempre funcionaba, así que usé su sugerencia.

session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));

funcionó a la perfección. Recuerde cambiar /../session a la ubicación relativa de su directorio de sesión real.

1

Tengo el mismo problema de permiso, pero en/var/lib/php/session /.

Para solucionarlo, elimino el archivo y reinicio php-fpm.

rm -rf /var/lib/php/session/sess_p930fh0ejjkeeiaes3l4395q96 
sudo service php5.6-fpm restart 

Ahora todo funciona bien.

+0

ha funcionado para mí, thx man – AMagyar

Cuestiones relacionadas