微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-fpm和nginx会话问题

过去一周左右我一直有这个问题。 我一直在研究一个在Sessions中依赖HEAVILY的PHP项目。 由于某种原因,我们一直在节省这几天的麻烦。 任何想法为什么?

这是错误

Warning: UnkNown: open(/tmp/sess_mmd0ru5pl2h2h9bummcu1uu620,O_RDWR) Failed: Permission denied (13) in UnkNown on line 0 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 Warning: session_start(): open(/tmp/sess_mmd0ru5pl2h2h9bummcu1uu620,O_RDWR) Failed: Permission denied (13)

Nginx版本:

Nginx version: Nginx/1.0.11

PHP-FPMconfiguration:

在xampp上使用PHP session_start

Nginx / selinux)权限拒绝会话错误,但创build文件

让Asterisk自动打电话给我和其他人参加一个会议

PHP不会在某些用户的会话中存储数据

为什么我的Web应用程序(WAMP)慢,如果我请求一个浏览器/会话多次?

;;;;;;;;;;;;;;;;;;;;; ; FPM Configuration ; ;;;;;;;;;;;;;;;;;;;;; ; All relative paths in this configuration file are relative to PHP's install ; prefix. ; Include one or more files. If glob(3) exists,it is used to include a bunch of ; files from a glob(3) pattern. This directive can be used everywhere in the ; file. include=/etc/PHP-fpm.d/*.conf ;;;;;;;;;;;;;;;;;; ; Global Options ; ;;;;;;;;;;;;;;;;;; [global] ; Pid file ; Default Value: none pid = /var/run/PHP-fpm/PHP-fpm.pid ; Error log file ; Default Value: /var/log/PHP-fpm.log error_log = /var/log/PHP-fpm/error.log ; Log level ; Possible Values: alert,error,warning,notice,debug ; Default Value: notice ;log_level = notice ; If this number of child processes exit with SIGSEGV or SIGBUS within the time ; interval set by emergency_restart_interval then FPM will restart. A value ; of '0' means 'Off'. ; Default Value: 0 ;emergency_restart_threshold = 0 ; Interval of time used by emergency_restart_interval to determine when ; a graceful restart will be initiated. This can be useful to work around ; accidental corruptions in an accelerator's shared memory. ; Available Units: s(econds),m(inutes),h(ours),or d(ays) ; Default Unit: seconds ; Default Value: 0 ;emergency_restart_interval = 0 ; Time limit for child processes to wait for a reaction on signals from master. ; Available units: s(econds),or d(ays) ; Default Unit: seconds ; Default Value: 0 ;process_control_timeout = 0 ; Send FPM to background. Set to 'no' to keep FPM in foreground for debugging. ; Default Value: yes ;daemonize = yes ;;;;;;;;;;;;;;;;;;;; ; Pool DeFinitions ; ;;;;;;;;;;;;;;;;;;;; ; See /etc/PHP-fpm.d/*.conf

Nginx.conf:

####################################################################### # # This is the main Nginx configuration file. # # More information about the configuration options is available on # * the English wiki - http://wiki.Nginx.org/Main # * the Russian documentation - http://sysoev.ru/Nginx/ # ####################################################################### #---------------------------------------------------------------------- # Main Module - directives that cover basic functionality # # http://wiki.Nginx.org/NginxHttpMainModule # #---------------------------------------------------------------------- user Nginx Nginx; worker_processes 5; error_log /var/log/Nginx/error.log; #error_log /var/log/Nginx/error.log notice; #error_log /var/log/Nginx/error.log info; pid /var/run/Nginx.pid; #---------------------------------------------------------------------- # Events Module # # http://wiki.Nginx.org/NginxHttpEventsModule # #---------------------------------------------------------------------- events { worker_connections 4096; } #---------------------------------------------------------------------- # HTTP Core Module # # http://wiki.Nginx.org/NginxHttpCoreModule # #---------------------------------------------------------------------- http { include /etc/Nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/Nginx/access.log main; index index.PHP index.html index.htm; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; # Load config files from the /etc/Nginx/conf.d directory # The default server is in conf.d/default.conf include /etc/Nginx/conf.d/*.conf; server { listen 80; server_name stats.smilingdevil.com; error_page 404 /404.PHP; root /var/www; access_log /var/log/Nginx/access.log; error_log /var/log/Nginx/error.log; location / { set $page_to_view "/index.PHP"; try_files $uri $uri/ @rewrites; root /var/www/; index index.PHP; } location @rewrites { if ($uri ~* ^/([a-z0-9]+)$) { set $page_to_view "/$1.PHP"; rewrite ^/([az]+)$ /$1.PHP last; } } location ~ .PHP$ { include /etc/Nginx/fastcgi.conf; fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; } } }

Apache ProxyPass和会话

我的网站主机正在添加PHPSESSID = fgh2h45 …到URL的末尾

会话variablesNginx / ruby​​ / thin server setup的模糊行为

PHP会话导致Apache无限期挂起

如何使用户会话继续24小时?

这个错误是由于运行PHP程序的用户可能没有写入/ tmp目录的权限

使所有用户都可以使用这个表扬

chmod 777 /tmp

导致相同问题的另一个原因是只读文件系统

如果/ dev / sda1挂载在/ tmp上并且由于繁重的写入,您的文件系统可能会变为只读。

再次使用这个命令重写

mount -t ext3 -o rw,remount /dev/sda1 /tmp

我发现我的PHP.ini试图将会话保存到/ var / lib / PHP / session而不是/ tmp

所以检查你的ini文件,看看它们被保存到什么地方(或者把它放到别的地方)。 然后确保该目录可由适当的进程写入

克里斯Rutledge是正确的,PHP有时是保存在/ var / lib / PHP / session /目录检查您的PHP.ini文件或创建777权限的目录

mkdir /var/lib/PHP/session chmod -R 777 /var/lib/PHP/session

只要将/ var / lib / PHP / session /的所有权从apache更改为Nginx,而不是给世界读取。

$ sudo chown -R NginxNginx / var / lib / PHP / session /

似乎我在Linux上发现了一些有趣的东西。 在一些PHP软件尝试读取/写入会话时,在chroot php-cgi中发生同样的错误。 我以为这可能是权限问题,但设置777后,将网络服务器的所有者设置为“/ tmp”并设置它在几个小时后,发现“/ dev”中的“urandom”设备需要工作。 只要确保它找到或复制/制作并临时更改权限(仅用于检查,然后再安全地更改):

chmod 777 /dev/urandom

奇怪的是,在某些PHP5.x版本中不需要,但在某些PHP7.x中需要在那里。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐