我是PHP的新手。 这是我的情况。我在vim中编写代码并将其放在/ var / www /下,然后我可以使用
本地主机/ * .PHP
在浏览器上运行我的代码。
当我的代码有bug时。它什么都没出来。
如何调试像c ++或java这样的mu代码?
感谢。
编辑:
一些朋友提供的链接对我没有帮助。我在Linux下。这是胜利。
答案 0 :(得分:7)
如果在本地主机上,我建议使用firefox或chrome并为mozilla安装firebug,并且chrome会获得默认值。请确保在本地主机上您的设置与要上传的服务器匹配,因为这可能会在上线时导致问题。
具体而言,大多数共享主机在安全模式和输出缓冲关闭时都有PHP,因此如果您使用它,请通过调用ob_start()来调用它;等等,否则你应该没有问题,学习调试是乐趣的一部分,帮助你学习很多:)
至于php错误只需重新编辑你的php.ini文件,你可以找到关于http://php.net的相关信息
快乐编码
答案 1 :(得分:6)
对于更高级的解决方案,您可以对PHP使用XDebug扩展名。
默认情况下,加载XDebug时,如果出现任何致命错误,它应自动显示回溯。或者您追踪到文件(xdebug.auto_trace
)以对整个请求进行非常大的回溯或进行概要分析(xdebug.profiler_enable
)或other settings。如果跟踪文件太大,您可以使用xdebug_start_trace()
和xdebug_stop_trace()
转储部分跟踪。
<强>安装强>
使用PECL:
pecl install xdebug
在Linux上:
sudo apt-get install php5-xdebug
在Mac上(使用Homebrew):
brew tap josegonzalez/php
brew search xdebug
php53-xdebug
矿井配置示例:
[xdebug]
; Extensions
extension=xdebug.so
; zend_extension="/YOUR_PATH/php/extensions/no-debug-non-zts-20090626/xdebug.so"
; zend_extension="/Applications/MAMP/bin/php/php5.3.20/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so" ; MAMP
; Data
xdebug.show_exception_trace=1 ; bool: Show a stack trace whenever an exception is raised.
xdebug.collect_vars = 1 ; bool: Gather information about which variables are used in a certain scope.
xdebug.show_local_vars=1 ; int: Generate stack dumps in error situations.
xdebug.collect_assignments=1 ; bool: Controls whether Xdebug should add variable assignments to function traces.
xdebug.collect_params=4 ; int1-4: Collect the parameters passed to functions when a function call is recorded.
xdebug.collect_return=1 ; bool: Write the return value of function calls to the trace files.
xdebug.var_display_max_children=256 ; int: Amount of array children and object's properties are shown.
xdebug.var_display_max_data=1024 ; int: Max string length that is shown when variables are displayed.
xdebug.var_display_max_depth=3 ; int: How many nested levels of array/object elements are displayed.
xdebug.show_mem_delta=0 ; int: Show the difference in memory usage between function calls.
; Trace
xdebug.auto_trace=0 ; bool: The tracing of function calls will be enabled just before the script is run.
xdebug.trace_output_dir="/var/log/xdebug" ; string: Directory where the tracing files will be written to.
xdebug.trace_output_name="%H%R-%s-%t" ; string: Name of the file that is used to dump traces into.
; Profiler
xdebug.profiler_enable=0 ; bool: Profiler which creates files read by KCacheGrind.
xdebug.profiler_output_dir="/var/log/xdebug" ; string: Directory where the profiler output will be written to.
xdebug.profiler_output_name="%H%R-%s-%t" ; string: Name of the file that is used to dump traces into.
xdebug.profiler_append=0 ; bool: Files will not be overwritten when a new request would map to the same file.
; CLI
xdebug.cli_color=1 ; bool: Color var_dumps and stack traces output when in CLI mode.
; Remote debugging
xdebug.remote_enable=off ; bool: Try to contact a debug client which is listening on the host and port.
xdebug.remote_autostart=off ; bool: Start a remote debugging session even GET/POST/COOKIE variable is not present.
xdebug.remote_handler=dbgp ; select: php3/gdb/dbgp: The DBGp protocol is the only supported protocol.
xdebug.remote_host=localhost ; string: Host/ip where the debug client is running.
xdebug.remote_port=9000 ; integer: The port to which Xdebug tries to connect on the remote host.
xdebug.remote_mode=req ; select(req,jit): Selects when a debug connection is initiated.
xdebug.idekey="xdebug-cli" ; string: IDE Key Xdebug which should pass on to the DBGp debugger handler.
xdebug.remote_log="/var/log/xdebug.log" ; string: Filename to a file to which all remote debugger communications are logged.
答案 2 :(得分:3)
在代码中包含这两行以查看哪种错误。
s='0100002000032000'
答案 3 :(得分:2)
您可以在代码顶部使用error_reporting()
...
error_reporting(E_ALL);
您还需要php.ini
中的display_errors
。
请注意,您应该在生产环境中关闭公共面向错误报告。
答案 4 :(得分:1)
除了在代码顶部使用error_reporting(E_ALL);
的评论之外,我还想使用php cli实用程序。我在PC上没有用于编写和调试php和html的Web服务器,因此cli实用程序的一个很好的功能是内置的Web服务器。要安装php cli:
sudo apt install php7.0-cli
要使用Web服务器,请cd到html和php文件所在的目录并运行:
php -S localhost:8080
然后将浏览器指向您正在测试的文件...例如:
http://localhost:8080/test.php
您还可以使用cli实用程序运行您的php代码,它将按行号显示错误(使用显示行号的编辑器)。您可能需要注释掉并调整依赖于html调用它的代码。
php test.php
答案 5 :(得分:0)
虽然我个人觉得var_dump足够我的php调试,但是有些人倾向于喜欢使用像xdebug这样的调试器。
答案 6 :(得分:0)
您可以通过PHP检查日志文件输出。查看配置的一种好方法是使用phpinfo()。
您也可以设置error_reporting(),以便看到错误消息而不是白页。
答案 7 :(得分:0)
只要出现问题,PHP就会在其目录中生成error_log
文件,您可以在那里找到调试信息。
另外,请尝试使用var_dump($someVarible)
。这将为您提供有关变量当前状态的有用信息 - 通常优于echo
。
答案 8 :(得分:0)
在大多数情况下,如果您将error_report
设置为-1,您将能够在浏览器中看到所有通知,警告和错误。
答案 9 :(得分:0)
使用这两行进行调试(这将使发现行号上的错误):
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);