V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
godloveplay
V2EX  ›  PHP

PHP 项目求助,同一份代码 生产环境不报错,本地启动就报错。

  •  
  •   godloveplay · 2023-09-08 15:11:35 +08:00 · 2225 次点击
    这是一个创建于 447 天前的主题,其中的信息可能已经有所发展或是发生改变。

    PHP5.0 的框架,项目在生产环境 用 ng 部署 同样的代码没有报错,dump($get['type']); 输出了 null 但是我本地环境 就直接抛异常了。 有没有 PHP 的朋友帮忙看看。。

    https://imgse.com/i/pP6CZSH https://imgse.com/i/pP6CnOI

    27 条回复    2023-09-09 10:46:22 +08:00
    wmm221166
        1
    wmm221166  
       2023-09-08 15:18:24 +08:00
    一个 dump($get) 一个 dump($get['type']), 然后 $get 是个 int
    GodlikeKarl
        2
    GodlikeKarl  
       2023-09-08 15:19:50 +08:00
    你把$get 数组整个打印出来看有没有'type'对应的元素
    abcdexx
        3
    abcdexx  
       2023-09-08 15:23:22 +08:00
    $get 是个 int 你也把它当数组使用? 你本地和生产环境 php 版本不一样吧? 要先判断 is_array($get)。
    token10086
        4
    token10086  
       2023-09-08 15:26:31 +08:00   ❤️ 1
    打个断点调试下
    另外建议本地和线上环境一毛一样,建议用 docker 去部署
    https://github.com/zhangjunjie6b/phpdocker
    godloveplay
        5
    godloveplay  
    OP
       2023-09-08 15:29:09 +08:00
    @wmm221166 #1 对的,生产竟然不报错。我看不懂了
    godloveplay
        6
    godloveplay  
    OP
       2023-09-08 15:29:28 +08:00
    生产本地 php7.4 生产应该是 7.2
    garlics
        7
    garlics  
       2023-09-08 15:31:31 +08:00
    版本问题,线上估计是 5.几的版本,本地估计是 7+的版本。如果版本一样就是错误提示等级不同,需要改配置文件。
    godloveplay
        8
    godloveplay  
    OP
       2023-09-08 15:36:51 +08:00
    使用的是 thinkphp5.0 的框架
    下图是生产环境的输出

    https://imgse.com/i/pP6iiGD
    zjsxwc
        9
    zjsxwc  
       2023-09-08 15:37:21 +08:00
    盲猜是 php5 碰到 $arr["non-exist-key"] 会返回 null 值,而 php7 碰到这种情况是抛异常。
    godloveplay
        10
    godloveplay  
    OP
       2023-09-08 15:38:03 +08:00
    我是 java 程序员,看到这个诡异的 情况 想请教一下,是不是什么设置让 生产 不抛异常的。
    godloveplay
        11
    godloveplay  
    OP
       2023-09-08 15:38:53 +08:00
    @zjsxwc #9 我本地改 php5 试试看 T T
    godloveplay
        12
    godloveplay  
    OP
       2023-09-08 15:47:41 +08:00
    下了好几个 PHP 版本 试了一下,php7.2 可以了。谢谢各位的热心 [抱拳]
    godloveplay
        13
    godloveplay  
    OP
       2023-09-08 15:57:33 +08:00
    @token10086 #4 请问 PHP 如何像 java 一样 在 IDEA 里面 断点 调试呀? 是使用 PHP xdebug 插件吗?
    shiroyuri
        14
    shiroyuri  
       2023-09-08 16:22:13 +08:00
    PHPStorm 配置 Xedug 插件
    0x49
        15
    0x49  
       2023-09-08 17:10:31 +08:00
    php7.4 需要 $get['type'] ?? null
    dilu
        16
    dilu  
       2023-09-08 17:53:30 +08:00
    线上环境肯定是关掉报错提示了,php.ini 有个 error_reporting 可以控制报什么级别的错误,一般生成环境是全部关掉,开发环境是 warn 起步。
    Rache1
        17
    Rache1  
       2023-09-08 18:48:54 +08:00
    这个图床,还不能国外访问。。。

    x86
        18
    x86  
       2023-09-08 18:54:11 +08:00
    thinkphp 本身就可以配置关闭不抛出异常的呀
    dongtingyue
        19
    dongtingyue  
       2023-09-08 19:05:22 +08:00
    php 环境改成一样的,要不然会有问题测不出来。
    GodlikeKarl
        20
    GodlikeKarl  
       2023-09-08 21:00:26 +08:00
    可能你的参数有问题,比如要传的 map ,结果传了一个 int 数字
    1wlinesperday
        21
    1wlinesperday  
       2023-09-08 22:48:00 +08:00
    借楼问一下,帮忙部署一个 PHP 项目多少钱啊 https://secure.phabricator.com/book/phabricator/article/installation_guide/
    taozywu
        22
    taozywu  
       2023-09-08 22:58:41 +08:00
    @1wlinesperday 可以私聊下 vx:dGFvenl3dQ==
    dayeye2006199
        23
    dayeye2006199  
       2023-09-08 23:07:42 +08:00 via Android
    朋友 docker 了解一下
    yogogo
        24
    yogogo  
       2023-09-09 00:11:33 +08:00 via Android
    服务器没有开启异常
    wellerman
        25
    wellerman  
       2023-09-09 00:27:52 +08:00
    @godloveplay #5 结合顶上两张图片,这代码在本地也不会有预期的结果。$get 本来要接受一个数组,你给传了整数 1127 ($supplier_id ) 当然报错。生产环境之所以没报错,是因为生产环境关闭了错误显示。打开错误显示,肯定一样的错误。 另,#3 楼也已经指出错误原因。
    显示全部错误:
    ini_set('display_errors', true);
    error_reporting(E_ALL);
    qsnow6
        26
    qsnow6  
       2023-09-09 00:31:56 +08:00
    docker 可以抹平所有环境的差异
    ganbuliao
        27
    ganbuliao  
       2023-09-09 10:46:22 +08:00
    打印一下生产环境的 php ini 和本地环境的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1670 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:53 · PVG 00:53 · LAX 08:53 · JFK 11:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.