PHP开发问题汇总
1.session_start(): open(/usr/local/php/tmp/sess_s28gg603s01dj8tmm1pe9lfen2, O_RDWR) failed: Permission denied
使用 php -i|grep php.ini 命令,查看我的php.ini文件(/usr/local/php/lib/php.ini)。其中的session.save.path,发现session的目录是/usr/local/php/tmp,执行下面的方法尝试解决权限的问题:
(1) 尝试:chmod -Rf 777 /usr/local/php/tmp
(2) 尝试:chmod -Rf 777 /usr/local/php
(3) 尝试:chmod -Rf 777 /var/lib/php
(4) 尝试:chown 777 -R /tmp和chown 777 -R /usr/local/php/tmp
(5) 尝试重启php:service php-fpm restart
(6) 我创建了/usr/local/php/session文件夹,尝试修改:/usr/local/php/etc/php-fpm.d/www.conf 文件,添加:php_value[session.save_path] = /usr/local/php/session
(7) 尝试修改 /usr/local/php/lib/php.ini , 将session.save_path 改为/usr/local/php/session
以上方法都不起作用。
最后的解决办法修改:/usr/local/php/etc/php-fpm.d/www.conf 文件,添加:php_value[session.save_path] = /tmp
经过我的观察和分析,/tmp文件夹和/usr/local/php/session文件的不同点就是/ tmp 文件夹的权限后面有个点:“drwxrwxrwx.”,而session只有“drwxrwxrwx”,没有点。这个点是SELinux特有的,但是我查看了系统的SElinux状态,并没有开启。
1.PHP Warning Permission denied (13) on session_start() [duplicate] (这里说是文件的权限问题)
2.How to Fix PHP Session Errors while Respecting Security with Correct Permissions ()
3.What permissions / ownership to set on PHP Sessions Folder when running FastCGI / PHP-FPM (as user “nobody”)? (这里说是修改/var/lib/php/session这个文件夹的权限,但是实际上我没有这个文件,还有说删除/tmp里面的文件,这个也不行)
4.session_start() open failed Permission denied (13)错误 (找到php.ini中记载的关于session的文件路径,配置权限,不起作用)
5.What are correct permissions for /tmp ? I unintentionally set it all public recursively (这个没什么用)
6.[乐意黎原创]PHP启用session后抛 session_start(): open(/var/lib/php/session/sess_… 的解决办法 (也是找到session文件夹,然后进行权限更改。里面提到了因为使用的是 php-fpm, session.save_path 在 /etc/php.ini中设置后不生效,)
5.访问phpMyAdmin报错
6.Linux文件权限属性后面的点的含义(ls -l)
7.thinkphp的runtime设置777还是报没有权限 (这篇文章也是设置了777没有效果,最后修改了www.conf中的user和group为nginx,重启php-fpm生效)
8.tp框架上出现警告session_start() open failed Permission denied (13)错误 (这个也是创建文件夹,修改权限777)
9.[PHP] 查找使用的哪个配置文件php.ini strace -e open php -m 这个没有用。
2.由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
3.文件上传不上去
我已经设置了nginx的上传文件大小,配置了thinkphp文件上传大小,最后还是获取不到文件。折腾了很久,总是找不到原因,我尝试进行了try 捕获,也没有错误消息。
[解决]
根据参考文章,我觉得没有file文件,或许是php.ini中的文件上传大小限制了,于是找到了php.ini文件,修改了 upload_max_filesize,将默认的2M改为了5M,结果真的有了文件。还有一个地方要注意,我有两个地方有配置文件,一个是 /et/php.ini,一个是/usr/local/php/etc/php.ini文件,修改完之后,记得重启php。
4.session缓存
最近一直困扰我的事情,就是我修改了别人写的php程序,重启php-fpm之后,也无法生效。我猜猜就是有缓存的。后来发现,果然是如此。php的session可能存在这几个地方:
(1) 程序中是否使用了 session_save_path,定义session存储位置
(2) 如果没有定义,查看 php.ini,是否有定义 seesion.save_path 存储了session
(3) 查看 /usr/local/php/etc/php-fpm.d/www.conf 文件,是否有定义 php_value[session.save_path]
(4) 查看系统 /tmp 目录,是否存在大量类似sess_xxxxxx的session文件。
1.php session缓存,php中session临时文件和缓存说明 在服务器中,如果将所有用户的 session 都保存到临时目录中,会降低服务器的安全性和效率,打开服务器存储的站点会非常慢。在Windows上PHP默认的Session服务端文件存放在C:\WINDOWS\Temp下,如果说并发访问很大或者 session建立太多,目录下就会存在大量类似sess_xxxxxx的session文件,同一个目录下文件数过多会导致性能下降
2.缓存 PHP session 变量
3.如何在Linux中自动删除或清理/tmp文件夹内容
5.页面重定向
总共有三种方案,我这里只写一种好了:1.location和“:”号间不能有空格,否则不会跳转。2.”Localtion:”后面有一个空格。3.在用header前不能有任何的输出,所以此函数只能放在文件的顶端。
1 |
|
1.php重定向页面的三种方式 header()函数、Meta标签、Javascript代码
2.php 的 header头 是怎么实现跳转的 ?
3.PHP页面跳转几种实现方法 这是一样的三种方法