【问题标题】:how to debug a php post script on the server and see echo output如何在服务器上调试 php post 脚本并查看 echo 输出
【发布时间】:2016-02-16 16:53:37
【问题描述】:

新手问题。我有一个网页将 $_POST 数据发送到服务器上的 php 脚本。 如何调试 php(见 echo 的输出)? 如果我只是浏览到 www.serveradress.com/myscript.php,我什么也看不到... 我正在使用 Chrome。

谢谢

编辑:我在客户端使用 ngFileUpload。 编辑:我看到该文件很受欢迎,因为我在带有 filezilla 的服务器上看到它。

客户端:

$scope.uploadBoardPic = function(file, errFiles) {
    $scope.boardPic = file;
    $scope.errFile = errFiles && errFiles[0];
    if (file) {
        file.upload = Upload.upload({
            url: 'http://myserver.com/angular-seed/appendBoardPicture.php',
            method: 'POST',
            data: {file: file}
        });

        file.upload.then(function (response) {
            $timeout(function () {
                file.result = response.data;
            });
        }, function (response) {
            if (response.status > 0)
                $scope.errorMsg = response.status + ': ' + response.data;
        }, function (evt) {
            file.progress = Math.min(100, parseInt(100.0 * evt.loaded / evt.total));
        });
    }   
}

服务器端:

<?php
$filename = $_FILES['file']['name'];
$destination = './' . $filename;
move_uploaded_file( $_FILES['file']['tmp_name'] , $destination );

echo "<pre>" . print_r($_FILES, true) . "</pre>";
?>

【问题讨论】:

  • die(var_dump($_POST)) 之前的 require_once 是否适合您?
  • Var_dump 并从您的角度退出您的 php 和控制台日志。看到它 inchrome 控制台
  • 谢谢,但它不起作用。我试过 die...、error_log 和 echo "
    " ,但我在 php 页面上什么也没有
  • 您使用的这个上传 JavaScript 库是什么?我会先尝试阅读一些相关文档。

标签: php


【解决方案1】:

Php 将 POST 变量保存在 $_POST 全局变量中。你应该能够运行一些影响

echo "<pre>" . print_r($_POST, true) . "</pre>";

获取您需要的调试信息。当然,这只有在您通过表单进行有效的 POST 时才有效。这意味着页面实际上会发生变化。不过,看看您的问题,您似乎正在为您的帖子/回复使用所有 javascript。在这种情况下,您需要在您的 javascript 中查找来自 php 的回复信息。您可以通过在提交过程中查看网络选项卡来执行此操作。

【讨论】:

  • 嗨,我刚刚尝试过,但在浏览到 myserver.com/angular-seed/appendBoardPicture.php 时什么也没有得到...只是一个空的Array ( )
  • 如果您打印出 $_POST 全局变量,并且只得到一个空数组,那么您没有正确发送信息。你可以简单地通过在 Chrome 中使用类似 POSTMAN 的东西来测试这个,向你的 URL 发送一个直接的 POST 请求。要开始故障排除,我会从您的客户端脚本发送一个静态字符串。从那里您可以解决问题是什么,什么不是。
  • 如果这个答案对您调试有帮助,请接受它作为选择的答案。谢谢!
  • 现在,它没有帮助,因为当我浏览到 PHP 文件时,它已经发送了 post 变量。在服务器上接收到 post 变量时如何刷新 php 渲染?你明白我的意思吗?
  • 您需要使用 javascript 提交帖子,然后在控制台(chrome 或 firefox)的网络选项卡中检查 var_dump 或 echo 输出的回复。由于你的输入来自js,所以在这方面,你的输出也会在js中接收。
【解决方案2】:

作为一种好的做法,您应该为此类任务使用错误日志。如果您还没有设置错误日志,那么您应该在 apache 配置文件中进行设置。

设置错误日志后,只需键入以下内容:

error_log(var_export($_POST, true));

您可以在错误日志中看到导出。

http://php.net/manual/en/function.error-log.php

【讨论】:

  • 我想要一些比打开错误日志来调试和构建我的 php 脚本更简单的东西。
  • 但这就是调试 PHP 脚本的方式。大多数优秀的 PHP 开发人员通过 SSH 连接到开发服务器并监控错误日志并调试代码。这是一个非常好的做法。 “Echo”或“var_dump”不是调试的好习惯,因为如果您从 ajax 调用脚本,您将看不到转储或回显。
  • 哦,好吧,我相信你。感谢您的确认。我要问如何访问我的错误日志。你能告诉我应该向我的服务器管理员询问哪种类型的错误日志吗?
猜你喜欢
  • 2010-12-10
  • 2015-07-25
  • 2016-02-09
  • 2018-08-05
  • 2011-11-10
  • 1970-01-01
  • 2017-10-03
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多