我有一个完全没有任何内容的脚本。它甚至没有在脚本的第一行返回一个echo?
我的所有其他脚本都有效,它们相似,具有相同的权限并且位于同一个文件夹中。
它远程运行在网站空间中。我该怎么调试呢?
答案 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%的工作时间。
另外一定要熟悉不同的打印功能。
我确定有更多这些,但这些是最常见的。使用<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