PHP cli脚本不输出任何内容

 飞舞的猫2502890283 发布于 2022-12-28 02:18

所以我有一个php脚本,我使用以下命令执行:

php -f my_script.php myArguments

该脚本使用svn进行版本控制.我刚更新它,粘贴命令将其运行到终端,并执行它.但是,没有输出.不是失败的消息,不是它打印任何东西,没有.看起来它永远不会开始.有点像以下几样:

me:/srv/scripts# php -f my_script.php myArguments
me:/srv/scripts#

其他脚本运行得很好.

我很难想出一个SSCCE,因为我无法真正分享造成这种情况的代码,而且我无法故意复制这种行为.但是,我现在已经看过两次了.如果我保存更改,还原文件并将其粘贴回来,很有可能它会运行得很好.

但是,我担心不知道导致这种奇怪行为的原因.是否有空白字符或某些东西告诉PHP不要启动或输出任何内容?

以下是我在看到此行为后尝试过的内容:

修改脚本使其变得简单 echo 'hello'

把废话放在脚本的开头,所以它是不可解析的.

粘贴来自工作脚本的代码

沮丧地把我的头撞在墙上

在另一个终端/ putty ssh连接中尝试它.

下面是它变得有趣:它实际上是工作在不同的终端.它按预期完成所有事情.

那么有没有人有任何想法可能导致这种情况,或者我应该尝试以确定问题?

编辑:

"不同的终端"仍然是终端应用程序,只是一个新的终端应用程序.

我有足够的权限来执行该文件,但即使我没有,它也应该吐出一条消息说我没有.

我故意引入语法错误,希望我能让PHP吐出一个解析错误.仍然没有输出.

2 个回答
  • 在运行时之前可能会禁用display_errors.您可以使用-d开关手动打开它:

    php -d display_errors=1 -f my_script.php myArguments
    

    2022-12-28 02:52 回答
  • 我遇到了同样的问题,没有多少强制PHP display_errors或检查语法有-l帮助

    我终于解决了我们的问题,也许你可以找到一些帮助解决这个问题

    不使用php.ini测试脚本:

    php -n test_script.php

    这将帮助您了解真正的原因 - PHP配置,其他人的脚本或您的脚本

    在我的情况下,这是一个问题,其他人的脚本是通过auto_prepend_filephp.ini中的指令添加的.(或者更具体地说,之后的几个文件和函数,因为我在所有代码中添加了调试,因为我去了 - 在旁注中,您可能会发现fwrite(STDOUT, "debug text\n");在尝试调试此类问题时使用非常有用)

    有人添加了一个正在运行prepend文件的函数,但是使用了@符号来抑制特定函数调用的错误.(如果您的测试脚本中包含任何包含其他代码的内容,您可能会遇到类似的问题,但与php.ini无关

    该功能失败并导致PHP无声死亡,与我的测试脚本无关

    你会发现有关如何使用@符号导致我遇到的确切问题的各种警告,也许你有,http://php.net/manual/en/language.operators.errorcontrol.php.

    再现类似症状:

    采用功能齐全的PHP环境,并通过在脚本顶部添加它来中断CLI输出 @xxx_not_a_real_function_name_xxx();

    所以你可能只是有一个php.ini的问题,或者你(或其他人)可能已经使用它@没有意识到它在调试中导致的严重(和令人沮丧和耗时)的后果

    2022-12-28 02:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有