配置 php 加载 memcache 版本不匹配
1 | php-cgi.exe -b 127.0.0.1:9000 -c D:\server\php-5.4.45\php.ini |
解决:下载匹配的版本
php_memcache 扩展下载地址
PHP7-memcache-dll
The requested URL /my was not found on this server.
旧版本的 apache 配置
1 | <Directory "C:/workspace/php/"> |
会导致任何url都提示:
1 | The requested URL /my was not found on this server. |
解决
在 httpd.conf 添加一个专门为 php 项目准备的目录,如: C:/workspace/php/
:
1 | <Directory "C:/workspace/php/"> |
然后,每个 php 项目在这个目录下为一个子目录,这样就可以了。
配置 memcache 管理 php session,Failed to initialize storage module: memcache
- 提示:
session_start(): Failed to initialize storage module: memcache (path: tmp/session)
- 这明显是没有配置 memcache 的样子,经过检查,原来是配置了两次。
1
2session.save_handler = memcache
session.save_path = tcp://localhost:11211
之后又配置了
1 | session.save_path = "tmp/session" |
所以,只是删除这个配置项即可:session.save_path = "tmp/session"
phpStorm 调试卡顿
普通调试模式,就是打开监听,运行网站。这种模式下,通常也是可以调试的,但是,偶尔,不能进入断点,网页也一直卡在那儿,如果停掉 PHPStorm 的监听,网页就不再卡,感觉在相互等待一样。
解决办法:
直接点击中间的调试按钮(甲壳虫)进行调试,则可直接进入断点,网页也不再卡,而且还能得到出错的信息,感觉这才是真正的调试,有用 IDEA 调试 Java 程序的感觉。
win10 + apache 2.4 网站访问报错
Forbidden
You don’t have permission to access / on this server.
在其它 php 项目与非 php 项目都能正常访问的前提下,只有一个网站有这个现象,排除目录权限配置不对的可能性。
最后发现,把网站目录配置到上一级目录了,改回网站根目录即可。
关于开发环境没有发现的错误,在线上被发现的问题
现象:开发环境用 apache + php,线上用 nginx + php,线上报错,或者客户在使用软件过程中发现有问题,查看日志,会发现明显错误。而本地开发环境,操作过程中不会发现错误。
假象
shopID未赋值时,apache 与 nginx 的表现,已知:apache 为 null,并未抛异常,线上的 nginx 会抛异常:Undefined index: shopID
事实
其实表现是一样的,只是在线上是通过查询错误日志来发现问题的,其实本地开发也是有错误日志的,无论是 apache 还是 nginx。
那么问题来了,为什么在开发测试的时候没有发现问题?
因为开发测试的时候根本不会留意错误日志文件,并且在作相关操作时,页面也没有报错。
但是,在 debug 模式下(按F12),Net->XHR 模式下查看请求 request 和 response,错误信息在 response下。