houOne
V2EX  ›  PHP

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

  •  
  •   houOne · Sep 8, 2023 · 3501 views
    This topic created in 1162 days ago, the information mentioned may be changed or developed.

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

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

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

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

    x86
    x86
    Sep 8, 2023
    18
    thinkphp 本身就可以配置关闭不抛出异常的呀
    dongtingyue
    dongtingyue
    Sep 8, 2023
    19
    php 环境改成一样的,要不然会有问题测不出来。
    GodlikeKarl
    GodlikeKarl
    Sep 8, 2023
    20
    可能你的参数有问题,比如要传的 map ,结果传了一个 int 数字
    1wlinesperday
    1wlinesperday
    Sep 8, 2023
    21
    借楼问一下,帮忙部署一个 PHP 项目多少钱啊 https://secure.phabricator.com/book/phabricator/article/installation_guide/
    taozywu
    taozywu
    Sep 8, 2023
    22
    @1wlinesperday 可以私聊下 vx:dGFvenl3dQ==
    dayeye2006199
    dayeye2006199
    Sep 8, 2023 via Android
    23
    朋友 docker 了解一下
    yogogo
    yogogo
    Sep 9, 2023 via Android
    24
    服务器没有开启异常
    wellerman
    wellerman
    Sep 9, 2023
    25
    @godloveplay #5 结合顶上两张图片,这代码在本地也不会有预期的结果。$get 本来要接受一个数组,你给传了整数 1127 ($supplier_id ) 当然报错。生产环境之所以没报错,是因为生产环境关闭了错误显示。打开错误显示,肯定一样的错误。 另,#3 楼也已经指出错误原因。
    显示全部错误:
    ini_set('display_errors', true);
    error_reporting(E_ALL);
    qsnow6
    qsnow6
    Sep 9, 2023
    26
    docker 可以抹平所有环境的差异
    ganbuliao
    ganbuliao
    Sep 9, 2023
    27
    打印一下生产环境的 php ini 和本地环境的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2006 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 55ms · UTC 01:26 · PVG 09:26 · LAX 17:26 · JFK 20:26
    ♥ Do have faith in what you're doing.