PHP在Linux环境下的代码调试方法
Xdebug是PHP生态中最强大的调试工具,支持断点、变量跟踪、堆栈分析等功能,完美适配Linux环境。
sudo apt-get install php-xdebug,CentOS/RHEL用sudo yum install php-xdebug),或通过PECL命令pecl install xdebug安装最新版本。/etc/php/8.1/fpm/php.ini,CLI模式用/etc/php/8.1/cli/php.ini),添加以下关键配置:[Xdebug]
zend_extension=xdebug.so # 加载Xdebug扩展
xdebug.mode=debug # 启用调试模式
xdebug.client_host=127.0.0.1 # IDE监听的IP(本地调试用127.0.0.1)
xdebug.client_port=9003 # 调试端口(默认9003,需与IDE一致)
xdebug.start_with_request=yes # 自动启动调试(可选:trigger/yes)
Settings > Languages & Frameworks > PHP > Servers,添加服务器(名称任意,如“Local Server”),设置“Host”为localhost、“Port”为80(或你的Web端口),勾选“Use path mappings”并将项目目录映射到服务器路径(如/var/www/html映射到本地项目目录);再进入Run > Edit Configurations,添加“PHP Debug”配置,选择对应的服务器。http://localhost/index.php)或在CLI中运行php /path/to/script.php,IDE会自动捕获调试会话,暂停在断点处,可查看变量、调用堆栈等信息。最基础的调试方法,适用于快速查看变量值或数据结构。
$array = ['name' => 'John', 'age' => 30];
print_r($array); // 输出数组结构
var_dump($array); // 输出变量类型和值(更详细)
echo "Current value: " . $variable; // 输出单个变量
var_dump能显示类型和属性,比print_r更直观。适合生产环境或无法直接输出的场景,将调试信息写入日志文件。
error_log("Debug: User ID is " . $userId, 3, "/var/log/php_debug.log");
// 第三个参数为日志文件路径(需确保PHP有写入权限)
tail -f /var/log/php_debug.log实时查看日志内容,或用cat、less命令查看历史记录。PHP内置的交互式调试工具,无需额外安装扩展,适合命令行脚本调试。
phpdbg /path/to/script.php进入调试模式。b 10:在第10行设置断点;c:继续执行到下一个断点;n:单步执行(不进入函数);s:单步执行(进入函数);p $variable:打印变量值;q:退出调试。/var/log/nginx/error.log,可通过error_log /var/log/nginx/error.log debug;(在nginx.conf中配置)开启调试级别。/var/log/apache2/error.log,可通过LogLevel debug(在apache2.conf中配置)开启调试。ini_set('log_errors', 1);和ini_set('error_log', '/path/to/php_error.log');将PHP错误信息写入指定文件,便于集中查看。用于检查代码中的条件是否满足预期,若条件为false则抛出错误,适合验证业务逻辑。
$userAge = 15;
assert($userAge >= 18, "User must be at least 18 years old.");
// 若$userAge小于18,会抛出AssertionError
assert_options(ASSERT_ACTIVE, 0)),避免影响性能。