PHP脚本什么都不做。怎么调试?

时间:2014-07-08 05:56:26

标签: php remote-debugging

我有一个完全没有任何内容的脚本。它甚至没有在脚本的第一行返回一个echo?

我的所有其他脚本都有效,它们相似,具有相同的权限并且位于同一个文件夹中。

它远程运行在网站空间中。我该怎么调试呢?

4 个答案:

答案 0 :(得分:1)

检查你的php.ini设置。

php.ini

display_errors = On
error_reporting = E_ALL

然后重新启动您的网络服务器并重试。

答案 1 :(得分:1)

将以下行放在脚本的顶部。

ini_set('display_errors', 'On');
error_reporting(E_ALL);

如果脚本中有任何错误,将显示。

答案 2 :(得分:0)

作为最后的手段,(正如其他人提到的首选方式)

你可以将所有代码注释掉,并且回溯跟踪代码告诉它停止,只要注意if {}块和其他控制结构。 例如......说你有这个代码。

<?php

function do_nothing(){

}

$somthing = 1;
if($something){
  do_nothing();
}

$badCode = 'hello'

$array = array(1,2,3,4,5);

foreach($array as $item ){
   echo 'item: '.$item;
}

没有输出,因为它已经坏了。

你可以

<?php
/*
function do_nothing(){

}

$somthing = 1;
if($something){
  do_nothing();
}

$badCode = 'hello'

$array = array(1,2,3,4,5);

foreach($array as $item ){
   echo 'item: '.$item;
}
*/
echo 'works';

输出

'works'

继续

<?php
/*
function do_nothing(){

}

$somthing = 1;
if($something){
  do_nothing();
}

$badCode = 'hello'
*/
$array = array(1,2,3,4,5); //need this for the loop
foreach($array as $item ){
 //don't comment half this block
   echo 'item: '.$item;
}

echo 'works';

输出

'item: 1'

'item: 2'

'item: 3'

'item: 4'

'item: 5'

'works'

最后

<?php
/*
function do_nothing(){

}

$somthing = 1;
if($something){
  do_nothing();
}
*/
$badCode = 'hello'

$array = array(1,2,3,4,5); //need this for the loop
foreach($array as $item ){
 //don't comment half this block
   echo 'item: '.$item;
}

echo 'works';

破碎,(缺少分号$ badCode =&#39;你好&#39 ;;)

这是调试的基本方法,当然。但如果你尊重控制块,它将100%的工作时间。

另外一定要熟悉不同的打印功能。

  • echo - 输出一个或多个字符串
  • print_r - 打印有关变量的人类可读信息
  • var_export - 输出或返回变量的可解析字符串表示
  • var_dump - 转储有关变量的信息
  • debug_backtrace - 生成回溯

我确定有更多这些,但这些是最常见的。使用<pre>也很有用 在打印对象和数组之前标记以保留空白并使其易于阅读。

我也喜欢使用这个小功能(可以告诉你打印的是哪一行)

/**
 * export a variable with line number from backtrace using offset
 * @param mixed $var
 * @param int $offset
 */
function print_debug($var=null, $offset=0){
    $stacktrace = debug_backtrace(false);
    $trace = $stacktrace[$offset];
    extract($trace);
    echo "<span style='color: #CCC;'> Output from FILE[ $file ] LINE[ $line ]</span>";
    echo "<pre>";
    var_export($var);
    echo "</pre>";
}

答案 3 :(得分:0)

作为程序员,知道使用调试工具是很方便的。 我建议你使用xdebug