Press "Enter" to skip to content

1,438 Comments

  1. json
    json January 4, 2020

    大神问下,我看到7.4版本每个扩展模块下面都有个extension.stub.php文件,这个应该是用来支持ide友好提示的吧,自己写的扩展怎么生成这种文件呢

  2. 在路上
    在路上 December 31, 2019

    我是路过的,顺便混个脸熟。

  3. 信仰
    信仰 December 25, 2019

    一个国家若绑架了教育,这个国家就不会有思想;一个国家若绑架了媒体,这个国家就不会有良心;
    一个国家若绑架了人民,这个国家就不会有尊严;一个国家若绑架了经济,这个国家就不会有公平;
    一个国家若绑架了法治,这个国家就不会有正义;一个国家若绑架了人权,这个国家就不会有自由;
    一个国家若绑架了宗教,这个国家就不会有信仰!
    一个执政党如此绑架了一个国家,这个执政党就应该被抛弃!

  4. bnm
    bnm December 25, 2019

    声明~~~
    当今社会被××党专制搞的极其恶劣,权钱交易、权色交易盛行。老百姓说当今的恶党官员个个贪,大官大贪,小官小贪,无官不贪,可见我们老百姓能生活的怎么样了。这种现象也不能长久,人不治天治,所以我们现在声明退出它的一切组织,成为一个真正的中华民族的子孙。
    ~~江明、晓娟~~
    三退:
    天灭共党,决非妄语,天象已显,来日无多,我速三退,免遭陪葬。~~
    长忆儿

  5. jane
    jane December 4, 2019

    鸟哥大佬,PHP更新7.4稳定版了,yac能更新支持下吗?我更新并安装好提示版本不合适。

  6. john
    john December 3, 2019

    鸟哥麻烦问下字符串中$str{1}和$str[1]什么区别啊,我在官网上也没找到答案

  7. 444
    444 October 23, 2019

  8. LMK
    LMK September 25, 2019

    github过来的。

  9. 周雨婷
    周雨婷 September 19, 2019

    最近我们有个项目,需要生成一个在固定范围内游走的K线图,然后我们经理使用Python加上随机游走算法能解决这个问题,想请问PHP有没有相关方面的知识呢?

    • aaa
      aaa September 20, 2019

      共产党

  10. lnto
    lnto August 30, 2019

    PHP调用webservice, 无视/etc/hosts修改,这是什么情况 ?
    gethostbynamel函数也是一样的。

  11. nan shire
    nan shire August 30, 2019

    最近我看到一个东西,叫做php文件锁的,按照说法,是高并发并且有事务的情况下,为了缓解mysql端的压力,因为事务会让mysql端有很多等待的语句要处理,所以用在php这边弄一个文件锁,请求的时候锁住,结束开锁,其中也会继续用事务,但是保证了mysql端不会有那么多事务的请求。但是这会消耗php服务器很多效率不是吗,这种做法是否可取,所以在这里问问您,想知道鸟叔您的看法。

  12. ming
    ming August 23, 2019

    我遇到一个比较诡异的问题,想向你请教一下
    我有一个php服务一直比较稳定,最近遇到php某几个进程刚接到请求,缓冲区就有“5555”内容,重启php就没问题了,过一段时间又出现,我在index.php第二行输出ob_get_contents(),就有这个内容,后来我使用ob_clean()解决了
    之后有php进程好像没有处理php逻辑就直接返回给nginx
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:07 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:12 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:20 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:24 +0800] “GET /test.php HTTP/1.1” 200 2.002 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:25 +0800] “GET /test.php HTTP/1.1” 200 0.000 31 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    – – – – 122.14.46.103 – – [23/Aug/2019:12:45:33 +0800] “GET /test.php HTTP/1.1” 200 2.001 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36” “-” “/test.php”
    注意第五个请求
    我在test.php内部有sleep,但是有的请求直接0.000时间就返回nginx,而且没有输出内容
    test.php代码
    <?php
    sleep(1);
    $status = ob_get_status(true);
    $pid = posix_getpid();
    $line = __LINE__;
    file_put_contents('/data/var/log/game-log/ob.txt', date('Y-m-d H:i:s') . " [$pid][$line]: " .var_export($status, true) . PHP_EOL, FILE_APPEND);
    sleep(1);
    echo "123" . PHP_EOL;
    echo 'abc' . PHP_EOL;
    $string = ob_get_contents();
    if( !empty($string) )
    {
    $pid = posix_getpid();
    $line = __LINE__;
    file_put_contents('/data/var/log/game-log/ob.txt', date('Y-m-d H:i:s') . " [$pid][$line]: " .$string . PHP_EOL, FILE_APPEND);
    }
    //ob_flush();
    //flush();
    ob_end_flush();
    nginx 1.8.0
    php 7.0.16
    php升级到7.0.33也没有解决

  13. yangknkp
    yangknkp August 21, 2019

    spl_autoload_register 的第二个参数,是否抛出异常有为什么是无效的

    • yangknkp
      yangknkp August 21, 2019

      function loady($className)
      {
      echo “运行 loady\n”;
      $fileName = ‘libs’ . DIRECTORY_SEPARATOR . $className;
      if (file_exists($fileName)) {
      require_once $fileName;
      return true;
      } else {
      echo “loady 失败”;
      return false;
      }
      }
      function loadx($className)
      {
      echo “运行 loadx\n”;
      $fileName = ‘libs’ . DIRECTORY_SEPARATOR . ‘tests’ . DIRECTORY_SEPARATOR . $className;
      if (file_exists($fileName)) {
      require_once $fileName;
      return true;
      } else {
      echo “loadx 失败”;
      return false;
      }
      }
      spl_autoload_register(‘loady’,true);
      spl_autoload_register(‘loadx’,true);
      try {
      new A();
      new B();
      new TestA();
      } catch (\Exception $e) {
      print_r($e->getMessage());
      }

  14. wuliping
    wuliping August 15, 2019

    大神,我有一个想法。我认为PHP是非常不错的语言,业务代码用PHP脚本编写方便快速调整迭代,常用工具可以封装为扩展用c语言实现以提升性能。但是就有一个问题,我最近在学习如何编写PHP扩展并使用,感觉过程还是过于繁杂(可能是因为还没入门吧。。),不过如果可以简化这个流程就好了。

  15. Sean
    Sean August 12, 2019

    老哥你好,我是字节跳动的猎头Sean,这边有字节全线业务的招聘,不知道您目前有没有在看新的机会呢,十分期待您能回复我的消息,希望能和您进一步沟通[可怜][可怜]

    • Sean.bao
      Sean.bao September 17, 2019

      你想招鸟哥?

  16. 陈生
    陈生 July 19, 2019

    世界那么大,我想来看看haokan112.com

  17. 留芳网
    留芳网 July 13, 2019

    看来是大神无疑了。漏洞名称
    Redis 基线合规检测
    这个漏洞如何修复啊。

  18. 啊啊
    啊啊 July 5, 2019

    这zend opcache 生成的bin文件有着源码保护的用处,我想知道这种字节码是否可以还原PHP代码,等待你的回复。谢谢

  19. Daniel Cheung
    Daniel Cheung July 2, 2019

    鸟哥,您好,请教一个问题:
    今天做python3的AES采用 ECB 模式,加密key使用16位key,发现加密出来的数据二进制流和直接使用php7中的 openssl_encrypt 加密出来的二进制流最后16个字节不一样,python3采用的是用0x00进行长度补齐,openssl_encrypt 使用的是 OPENSSL_RAW_DATA 方式,不知道 openssl_encrypt 是如何补码的?是否是由于补码方式不一样导致的加密结果最后16个字节不一样。
    谢谢!

  20. 1
    1 June 28, 2019

    zend opcache 的字节码能被反编译吗?

  21. Fireworks
    Fireworks June 20, 2019

    鸟哥,请问你首页的文章截断是怎么做的?我做了一个截断html字符串的,然后我再去补全html标签,但是这样会遇到一个尴尬的问题,例如 URL 地址,或者其他需要完整的字就会断掉。

    • yangfan
      yangfan June 25, 2019

      你可以试试 mb_substr 可能会有惊喜等着你 mb_ 函数系列

      • Fireworks
        Fireworks July 1, 2019

        谢谢 我去试一下

  22. FrPHP-风
    FrPHP-风 June 4, 2019

    您好,久仰大名。我遇到问题了,抱歉,可能会占用您的宝贵时间,但我实在经过多次探索未能解决这个问题,困扰我好久了。
    我是php程序员,最近开发一个项目,发现同一个系统,访问不同页面会出现两个session_id,我翻遍了文档,并没有找到解决方案。下面我说下具体出现的原因:
    项目要实现用户在浏览器打开情况下,就一直保持登录,除非关闭浏览器。
    我想通过不断刷新session来保持session一直正常访问。
    1、我在主框架控制器入口写了函数如下:
    function start_session($expire = 0) {
    if ($expire == 0) {
    $expire = ini_get(‘session.gc_maxlifetime’);
    } else {
    ini_set(‘session.gc_maxlifetime’, $expire);
    }
    $session_cache_dir = APP_PATH.’cache/tmp’;//本地可查看session记录
    if(!file_exists($session_cache_dir)){
    mkdir($session_cache_dir,0777,true);
    }
    ini_set(‘session.save_path’,$session_cache_dir);
    ini_set(“session.cookie_httponly”, 1);
    if (!isset($_COOKIE[‘PHPSESSID’])) {
    session_set_cookie_params($expire);
    session_start();
    } else {
    session_start();
    setcookie(session_name(), session_id(), time() + $expire);
    }
    }
    每次访问都执行一遍:start_session(60);
    2、首次进入页面登录,我保存用户信息用$_SESSION[‘member’],此时出现一个session_id
    cache/tmp能够查看到一个session
    这一套流程下来都没什么问题,访问各个页面都只有一个session,没有任何问题
    3、我在当前页面控制器里写入一个函数:
    //更新session的过期时间
    function update_session_maxlifetime(){
    $cache_time = $cache_time==0 ? 600 : $cache_time;
    setcookie(session_name(), session_id(), time() + $cache_time);
    JsonReturn(session_id().’-‘.$_COOKIE[session_name()].’更新session成功!’);
    }
    //我用ajax每隔几秒访问这个函数,以希望保持session是最新的
    4、这个方法确实能让当前页面不会掉session,但是当我点击当前页面其他栏目链接的时候,会提示重新登录,而且session_id不同,我刷新当前页面也不会提示登录,F12/查看cookie发现PHPSESSID同时存在两个!本地tmp中能看出来,一个session_id的记录是空的,而当前页面的session_id是有数据的!
    5、我做过如下猜测和尝试:
    设置ini_set(‘session.gc_maxlifetime’, 86400);//一天
    本地cookie session_set_cookie_params(60);//60秒
    我觉得应该是服务器先过期,导致cookie未过期,实际上session_id过期了。
    但,并不是,上面问题依旧存在。
    写的内容有点多,希望您能帮我解决一下,非常感谢!

    • ius
      ius August 10, 2019

      你这个好像进不去哦,还是说只有大屏首页

  23. 聚网志成
    聚网志成 May 15, 2019

    我看了不少网站,博主的网站写的不错,收藏了哈,经常来看,有空我们一起做个友qing链jie呗,我的是:www.jw61.com 深圳网站建设,等着你哦。

  24. 小夏阿姨
    小夏阿姨 April 23, 2019

    想请教鸟哥一个关于yaf的问题
    打算基于swoole+yaf实现一个api应用,用rsa对所传输数据进行加密并以raw发送给服务端,服务端取出请求中的raw后尝试对其解密及验签等操作,当解密及验签不成功时,直接响应错误给客户端。
    方案有三:
    1 在Yaf\Plugin_Abstract::dispatchLoopStartup 前某个时刻进行解密验签
    2 controller 继承 Yaf\Controller_Abstract,在init方法中进行解密验签
    3 在入口中 application::run 之前 进行解密验签
    如果用第3个方案就用不了yaf提供的response来达到所有响应统一由一个地方执行了,所以放弃此方案
    如果是前两个方案,问题来了,swoole是禁止在程序中用exit 或 die之类退出的,我们需要怎么跳过controller中的流程而直接响应错误。
    除了上面3种方案是否还有别的方案

    • test
      test April 24, 2019

      config:
      application.dispatcher.throwException=1
      application.dispatcher.catchException = 1
      then thron Yaf\Exception where you want to response app error
      yaf will catch it by ErrorController::errorAction

    • test
      test April 24, 2019

      config:
      application.dispatcher.throwException=1
      application.dispatcher.catchException = 1
      then throw Yaf\Exception where you want to response app error
      yaf will catch it by ErrorController::errorAction

  25. lucky
    lucky April 19, 2019

    不知道你发现没,在php.ini里设置session.cookie_httponly = On 不管在PHP哪一个版本,都是不生效的,设置重启之后,在浏览器里document.cookie一样可以获取到cookie的值.这算不算是一个bug呢?

    • gao
      gao May 5, 2019

      那是js获取 php管不了大哥

      • rory
        rory July 8, 2019

        那这个有设定是什么作用

  26. LeiGong
    LeiGong April 17, 2019

    是时候放点新技术出来了….
    尝点新鲜的~~

  27. jwcom
    jwcom April 16, 2019

    php7.3 里 skel 怎么建自定义的函数,用原来的方式好象不行啊. 系统默认产生的能用…. 不知道有没有相关资源给点~

  28. liulixin
    liulixin April 8, 2019

    遇到的一个问题。用file_get_contents函数去获取图片链接中的图片数据,执行时file_get_contents函数会将一些链接中的&符号自动转化成&符号,导致链接不存在获取数据失败,查了一些资料也没找出什么原因,所以想请教请教鸟哥这是什么问题?

  29. lin ming
    lin ming April 1, 2019

    yaf.lowcase_path 已经开启,建了一个app模块,可以总是提示找不到文件,错误信息如下:/data/cpfp/public/../application/modules/App/controllers/Sdk.php,目录app在项目中是小写。

  30. acewee
    acewee March 21, 2019

    最近有个业务有大量的请求第三方接口,然后想起curl可以并行请求,网上看了一些例子及使用的问题,例子少,而且说可能会导致cpu负载,自己不清楚它底层怎么实现得,不敢用,