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 真的關了嗎?
在開發過程中,當你修改了代碼,可實際上卻輸出的是改之前的內容。
檢測是否關閉了 opcache。var_dump(ini_get('opcache.enable'));
如果為 0,剛為關閉。
最近在用 laradock 這個 docker 環境,我在配置里改了 PHP_FPM_INSTALL_OPCACHE=false,并且也注釋了 ./php-fpm/opcache.ini 里的所有東西,又重新編譯了容器。但結果就是沒關掉 opcache!
最后我發現,不能注釋掉,感覺是opcache默認開啟的。我把 ./php-fpm/php5.6.ini 和 ./php-fpm/opcache.ini 里明確指定了 opcache.enable = 0、opcache.enable_cli=0。這才解決。
一個字,煩~
3、關于空間名大小寫問題
問題:在A類內實例化B類,并調用B類內的C方法,第一次運行,沒用錯誤。這時修改C方法,重新運行,結果卻是修改之前的代碼。
解決:一開始懷疑有opcache緩存,所以關掉了opcache。結果仍解決不了。我的docker用的是 ubuntu,我把代碼放到了 centos上,結果報錯 - “A類實例化B類的時候,找不到B類”。可明明在ubuntu上沒問題啊。一經檢查,發現 B類空間名 中的路徑與 B類文件路徑存在不一致(主要是有一個字母的大小寫不同,其它部分都一樣)。
于是把B類的空間名的大小寫與所在文件路徑的路徑(主要指B類所在文件的上級文件夾的命名)大小寫統一,問題解決了。
不是緩存問題~
原文地址:https://segmentfault.com/a/1190000016109590
轉載于:https://www.cnblogs.com/lalalagq/p/9974804.html
總結
以上是生活随笔為你收集整理的PHP开发错误锦集(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 个性签名心情好的句子
- 下一篇: 写代码:使用while循环实现输出1,2