2015-07-03 114 views
0

我正在研究一个基本的应用程序,它不使用任何框架,也没有debug = 1。我试图弄清楚如何显示php的var_dump s和error_log s,但我不确定它们应该在哪里打印。PHP error_log()不起作用

我在本地使用PHP的内置服务器。 这里是我的html:

<?php 

session_start(); 

?> 

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 

    <pre> 

    </pre> 

</body> 
</html> 

我想session_start()将有PHP var_dump秀的HTML之前,但没有任何东西。

我也尝试安装ChromePHP,我可以让它在HTML中打印东西,但不是当我将这些语句移入PHP代码中时。

我也有这个类的日志记录一些错误:

class Utils { 

    public static function log($message) 
    { 
     @error_log($message, 0); 
    } 

} 

我试图将其更改为error_log($message, 3, './mylog.txt');依然没有。

这可能是有史以来最基本的问题,但我不知道如何调试普通的PHP。

+0

我会删除error_log前面的@。 PHP会在命令行默认写入stderr。如果该文件不可写,它也将回退到stderr。确保文件是可写的“chmod + w ./mylog.txt” –

+0

var_dump与会话或错误报告/日志记录完全无关。使用echo – rjdown

+0

laura没什么不同:这意味着代码没有执行,这就是为什么没有行号。它看起来像你的问题不是日志记录,但可能是你运行“php -S”的地方?在运行php -S的目录中是否有index.php? –

回答

0

除了session_start()之外,代码中没有PHP命令。没有回声,没有var_dump ...和session_start写入正确。在这种情况下,PHP开始会话并将Html代码的其余部分返回给浏览器。

所以这里没有真正的问题。

如果你想看到的东西,

// you should try 
echo "Test, PHP is working"; 

如果你没有在这里看到任何东西,那么你的Web服务器不能正常工作。查看你应该使用哪个端口并查看服务是否正在运行。

如果你有更多的代码需要调试,有一些命令可以定义输出。

// Look up those: 
ini_set("display_errors", 1); 
ini_set("track_errors", 1); 
ini_set("html_errors", 1); 
error_reporting(E_ALL); 

这有帮助吗?