【问题标题】:PHP die suddenly stops to show stringPHP死突然停止显示字符串
【发布时间】:2018-05-30 21:46:07
【问题描述】:

我是 php 的菜鸟。我已经使用 php 中的脚本与 arduino 通信超过 1 年了。

Arduino 将数据发送到我的 php 脚本,它会回答 arduino 可以读取的文本,以了解数据是否已正确保存。还有一种方法可以获取 arduino 从我的 mysql 数据库启动时需要的一些设置。

我一直在回复我的 arduino 答案的方式是使用“DIE”功能。

我有这个 php 文件(伪代码):

function.php(几个函数)

function response($str) {
    die('<' . $str . '>');  //< and > is to let arduino knows exactly the answer
}   

function get_settings() {
    $response = "";
    // ...... so response is completed
    return $response;
}

index.php(此文件包含function.phpgate.php 的“require_once”以及其他功能。它是主文件)

gate.php(从 arduino 接收数据并需要发送答案的脚本文件)

//it gets data from $_GET and saves it into a mysql database
//After that:
if ($result) {                      
    response('OK');                     
} else {
    response('BAD_VALUES');
}
//And with other params in the $_GET, it does:
if ($_GET['k'] === ARDUINO_KEY) {
    response(get_settings());
} else {
    response('BAD KEY');
}

本周以来的问题是: 1.如果我想得到“response('OK');”来自gate.php 我什么都没有,在 Chrome 中我什么也看不到 2.如果我想得到“response(get_settings());”从 gate.php 我确实得到了信息,Chrome 正在显示它。 3. 如果我将这一行“response(get_settings());”更改为“response('OK');”或“响应(“OK”);”我什么都没有,在 Chrome 中我什么也看不到

您对此有何看法?为什么返回字符串的函数有效,而字符串无效。为什么它工作了几个月,突然就不行了?

我已经在我的“免费主机计划”和 usbWebserver 中检查了它。

非常感谢您的帮助。

【问题讨论】:

  • 发生了什么变化?你检查过错误日志吗?您能否更好地解释您的意思:“为什么返回字符串的函数有效,而字符串无效。” ?
  • 某事阻止 response() 正常工作。您需要检查错误日志以查明问题的根源。
  • “为什么返回字符串的函数有效,而字符串无效。”对不起我的英语不好。我的意思是它与返回字符串的函数完美配合,但如果我直接写一个字符串,它就不起作用了。
  • 感谢@MichaelGregoire。我不确切知道如何检查错误日志,但奇怪的是它直到本周才有效。这对我来说很奇怪。还有..为什么它与“response(get_settings());”一起工作这意味着响应功能可以正常工作,不是吗?

标签: php die


【解决方案1】:

关于 die() 括号中的字符串及其等效的 exit(),PHP 手册指出:

如果status(即在您的情况下为字符串)是整数,则该值将用作退出状态 并且不打印。退出状态应该在 0 到 254 的范围内, 退出状态 255 由 PHP 保留,不应使用。状态 0 用于成功终止程序。

没有返回值。

所以你可以使用echo 来获得可见的输出,然后使用die()

【讨论】:

  • 非常感谢。 PHP手册还说:If status is a string, this function prints the status just before exiting.
  • 我认为你的答案是正确的,但我对die('&lt;' . $str . '&gt;'); 感到困惑,那不会被视为字符串吗?
【解决方案2】:

我已经完成了这项检查:

die('<' . $str . '>');   ----> doesn't work
die('#' . $str . '>');   ----> works !!!
die('#' . $str . '<');   ----> works !!!
die('>' . $str . '<');   ----> works !!!

所以它不喜欢开头的'

为什么?还有,为什么这周会发生这种情况?

注意:我可以更改这些外部字符,但我想了解问题的真正原因

你好,有人知道吗???

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多