PHP 项目求助,同一份代码 生产环境不报错,本地启动就报错。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
houOne
V2EX    PHP

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

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

    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
    houOne
        5
    houOne  
    OP
       2023-09-08 15:29:09 +08:00
    @wmm221166 #1 对的,生产竟然不报错。我看不懂了
    houOne
        6
    houOne  
    OP
       2023-09-08 15:29:28 +08:00
    生产本地 php7.4 生产应该是 7.2
    garlics
        7
    garlics  
       2023-09-08 1:31:31 +08:00
    版本问题,线上估计是 5.几的版本,本地估计是 7+的版本。如果版本一样就是错误提示等级不同,需要改配置文件。
    houOne
        8
    houOne  
    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 碰到这种情况是抛异常。
    houOne
        10
    houOne  
    OP
       2023-09-08 15:38:03 +08:00
    我是 java 程序员,看到这个诡异的 情况 想请教一下,是不是什么设置让 生产 不抛异常的。
    houOne
        11
    houOne  
    OP
       2023-09-08 15:38:53 +08:00
    @zjsxwc #9 我本地改 php5 试试看 T T
    houOne
        12
    houOne  
    OP
       2023-09-08 15:47:41 +08:00
    下了好几个 PHP 版本 试了一下,php7.2 可以了。谢谢各位的热心 [抱拳]
    houOne
        13
    houOne  
    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 插件
    hello321
        15
    hello321  
       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     Solana     843 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 20:44 PVG 04:44 LAX 13:44 JFK 16:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86