PHP开发错误锦集(持续更新)
1、trait 命名問題。
問題:trait 里定義的方法找不到
<?phpnamespace app\controllers;trait Example
{public function example();
}class Foo
{use Example;public function __construct(){$this->example(); }
}
PHP message: PHP Fatal error: Call to undefined method app\controllers\FooController::example() in path/controllers/FooController.php on line xx 解決:
trait 與 trait 里寫的方法名稱不可以相同。將上面的 trait 名稱 Example 和 方法名 example() 改成不一樣就可以了。 2、你的 opcache 真的關(guān)了嗎?
在開發(fā)過程中,當(dāng)你修改了代碼,可實(shí)際上卻輸出的是改之前的內(nèi)容。
檢測是否關(guān)閉了 opcache。var_dump(ini_get('opcache.enable'));
如果為 0,剛為關(guān)閉。
最近在用 laradock 這個 docker 環(huán)境,我在配置里改了 PHP_FPM_INSTALL_OPCACHE=false,并且也注釋了 ./php-fpm/opcache.ini 里的所有東西,又重新編譯了容器。但結(jié)果就是沒關(guān)掉 opcache!
最后我發(fā)現(xiàn),不能注釋掉,感覺是opcache默認(rèn)開啟的。我把 ./php-fpm/php5.6.ini 和 ./php-fpm/opcache.ini 里明確指定了 opcache.enable = 0、opcache.enable_cli=0。這才解決。
一個字,煩~
3、關(guān)于空間名大小寫問題
問題:在A類內(nèi)實(shí)例化B類,并調(diào)用B類內(nèi)的C方法,第一次運(yùn)行,沒用錯誤。這時修改C方法,重新運(yùn)行,結(jié)果卻是修改之前的代碼。
解決:一開始懷疑有opcache緩存,所以關(guān)掉了opcache。結(jié)果仍解決不了。我的docker用的是 ubuntu,我把代碼放到了 centos上,結(jié)果報(bào)錯 - “A類實(shí)例化B類的時候,找不到B類”。可明明在ubuntu上沒問題啊。一經(jīng)檢查,發(fā)現(xiàn) B類空間名 中的路徑與 B類文件路徑存在不一致(主要是有一個字母的大小寫不同,其它部分都一樣)。
于是把B類的空間名的大小寫與所在文件路徑的路徑(主要指B類所在文件的上級文件夾的命名)大小寫統(tǒng)一,問題解決了。
不是緩存問題~
原文地址:https://segmentfault.com/a/1190000016109590
轉(zhuǎn)載于:https://www.cnblogs.com/lalalagq/p/9974804.html
總結(jié)
以上是生活随笔為你收集整理的PHP开发错误锦集(持续更新)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个性签名心情好的句子
- 下一篇: 写代码:使用while循环实现输出1,2