zoukankan      html  css  js  c++  java
  • PHP开发错误锦集(持续更新)

    1、trait 命名问题。

    问题:trait 里定义的方法找不到

    
    <?php
    
    namespace appcontrollers;
    
    trait Example
    {
        public function example();
    }
    
    
    class Foo
    {
        use Example;
        
        public function __construct()
        {
            $this->example();    
        }
    }
    PHP message: PHP Fatal error:  Call to undefined method appcontrollersFooController::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 = 0opcache.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
  • 相关阅读:
    hdu 5972 Regular Number
    hdu 5971 Wrestling Match
    福大软工 · BETA 版冲刺前准备(团队)
    福大软工 · 第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
  • 原文地址:https://www.cnblogs.com/lalalagq/p/9974804.html
Copyright © 2011-2022 走看看