summaryrefslogtreecommitdiff
path: root/sapi/phpdbg/.phpdbginit
blob: 1ad35218eded92c06f12b2c3bf35bbf90c8e7fae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
##########################################################
# .phpdbginit
#
# Lines starting with # are ignored
# Code must start and end with <: and :> respectively
##########################################################
# Place initialization commands one per line
##########################################################
# exec sapi/phpdbg/test.php
# set color prompt white-bold
# set color notice green
# set color error red

##########################################################
# Embedding code in .phpdbginit
##########################################################
<:
/*
* This embedded PHP is executed at init time
*/

/*
* Functions defined and registered by init
* will persist across cleans
*/

/*
function my_debugging_function() 
{
	var_dump(func_get_args());
}
*/

/* phpdbg_break(PHPDBG_METHOD, "phpdbg::method"); */
/* phpdbg_break(PHPDBG_FUNC, "my_global_function"); */
/* phpdbg_break(PHPDBG_FILE, "/path/to/file.php:10"); */

/*
 If readline is loaded, you might want to setup completion:
*/
if (function_exists('readline_completion_function')) {
	readline_completion_function(function(){
		return array_merge(
			get_defined_functions()['user'],
			array_keys(get_defined_constants())
		);
	});
}

/*
 Setting argv made trivial ...
 
 argv 1 2 3 4
 ^ set argv for next execution
 
 argv
 ^ unset argv for next execution
 
*/
function argv()
{
	$argv = func_get_args();
	
	if (!$argv) {
		$_SERVER['argv'] = array();
		$_SERVER['argc'] = 0;
		return;
	}
	
	$_SERVER['argv'] = array_merge
	(
		array("phpdbg"),
		$argv
	); 
	$_SERVER['argc'] = count($_SERVER['argv']);
	
	return $_SERVER['argv'];
}
:>
##########################################################
# Now carry on initializing phpdbg ...
##########################################################
# R my_debugging_function
# R argv

##########################################################
# PHP has many functions that might be useful
# ... you choose ...
##########################################################
# R touch
# R unlink
# R scandir
# R glob

##########################################################
# Remember: *you have access to the shell*
##########################################################
# The output of registered function calls is not,
# by default, very pretty (unless you implement
# and register a new implementation for phpdbg)
# The output of shell commands will usually be more
# readable on the console
##########################################################
# TLDR; if you have a good shell, use it ...
##########################################################