如果在整个代码库中存在日志记录语句,如何设置记录器,以便在将代码部署到生产环境中时不必注释掉对记录器的每次调用?
这是我目前的代码:
import logging
logging.basicConfig(filename='./example.log', level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M')
logging.debug('debug failed')
logging.info('info failed')
logging.warning('A warning')
Run Code Online (Sandbox Code Playgroud) 我正在尝试远程调试一个php web应用程序但是无论何时我尝试启动一个调试会话Eclipse都会给我带来一堆弹出窗口:
调试器错误:"找不到合适的文件或没有选择文件.调试已终止".

这是我目前的Xdebug 2.2.1配置:
[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=0
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
Run Code Online (Sandbox Code Playgroud)
这是我的Eclipse 4.2.1调试配置:

Xdebug已正确安装,我在phpinfo()输出中看到它已启用.
当我尝试运行xdebug分析(从命令行)时,脚本立即死亡.我没有收到任何反馈.(如果我在关闭xdebug profiling的情况下运行脚本,那么脚本就会像我期望的那样执行.)我在Centos 6中运行php 5.4.13.
我尝试了两种不同的方法来启用分析:编辑php.ini,并在执行脚本时使用-d标志.
我的php.ini的相关部分如下所示:
[xdebug]
zend_extension="/usr/lib64/php/modules/xdebug.so"
xdebug.remote_enable = 1
xdebug.default_enable = 0
xdebug.profiler_output_dir = "/tmp/profiling"
# xdebug.profiler_enable = 1 # I uncomment this line to try to profile my script
Run Code Online (Sandbox Code Playgroud)
我使用这两个命令之一调用脚本(并确保ini文件行被注释掉(或不符合)).
$> /usr/bin/php scripts/daemon/PostProcess.php -c 4
Run Code Online (Sandbox Code Playgroud)
要么
$> /usr/bin/php -d xdebug.profiler_enable=1 scripts/daemon/PostProcess.php -c 4
Run Code Online (Sandbox Code Playgroud)
我确信正在正确解释设置.
$> php -d xdebug.profiler_enable=1 --info | grep profile | less
xdebug.profiler_aggregate => Off => Off
xdebug.profiler_append => Off => Off
xdebug.profiler_enable => On => On
xdebug.profiler_enable_trigger => Off => Off
xdebug.profiler_output_dir => /tmp/profiling …Run Code Online (Sandbox Code Playgroud) 我刚刚在我的机器上设置了 Docker 并且有一个 Nginx/PHP7 (FPM)/MySQL 设置一切正常,但是在 PHP 容器上安装了 Xdebug 我无法让它连接回我主机上的 PHPStorm。
这是我的 PHP Xdebug 配置...
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-
20151012/xdebug.so
xdebug.remote_log=/usr/local/var/log/xdebug.log
xdebug.remote_enable=1
xdebug.remote_host=192.168.99.1
xdebug.remote_port=9000
xdebug.remote_connect_back=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
Run Code Online (Sandbox Code Playgroud)
浏览时,如果为容器设置了 Xdebug 启用 cookie,则不会提示连接。如果我浏览一个本地托管的站点,那么我知道 PHPStorm 的收听是正确的。
在本地机器上,我可以 telnet 到端口 9000...
$ telnet 192.168.99.1 9000
Trying 192.168.99.1...
Connected to 192.168.99.1.
Escape character is '^]'.
^]
telnet> quit
Connection closed.
Run Code Online (Sandbox Code Playgroud)
...但是我不能从 boot2docker VM 或容器。当我尝试时,它只是坐在那里什么都不做。然而,VM 和容器都可以很好地 ping 主机。
我试过禁用我的 Mac 的防火墙,但仍然没有乐趣。
我不太确定如何禁用 boot2docker VM 上的防火墙。
任何有关为什么这不起作用的见解都将受到极大欢迎。提前致谢。
我正在使用 NetBeans 通过 xdebug 来调试 php,一切都很完美,但是当我正在调试的同一个脚本中有多个连接时。
我已经看到 PhpStorm 提供了配置检查:同时连接https://blog.jetbrains.com/phpstorm/2013/04/simultaneous-debugging-sessions-in-phpstorm/
我想知道 NetBeans 是否可以管理同时连接以及如何激活它?
当我使用 Xdebug 在 VSCode 中调试变量时,长变量(如 SQL 语句)在预览鼠标悬停或检查面板中被截断。
我怎样才能看到完整的文本?
我在 Ubuntu 上的本地电脑上的 vagrant 上正确运行了 xdebug。它显示了带有错误信息的橙色表格。我的测试页面是localhost:8030
在 Chrome 浏览器中,我有Xdebug helper.
问题是每次刷新站点时,PhpStorm 中都会显示一个烦人的警告:
调试会话没有暂停就完成了
这可能是由于路径映射配置错误或本地和远程项目不同步造成的。
要找出问题,请检查 PHP 上“本地主机”服务器的路径映射配置 | 服务器或在 PHP 脚本选项(从运行菜单中)的第一行启用中断。
我已经在“PHP | Servers”检查了“localhost”服务器的路径映射配置,它们没问题。我的 PhpStorm 项目目录与默认的 Vagrant 目录相关联/vagrant/web/。
启用Break at first line in PHP scripts option确实有帮助,但我认为这是一种机会主义。
如何摆脱这些 PhpStorm 警告?
我正在努力为我的 php 应用程序开发我自己的错误处理程序,我需要向开发服务器上的用户发送一个漂亮的异常报告。因此,当它捕获异常时,它必须解析异常堆栈跟踪以显示函数、行参数等。但是,我不再有函数调用中的参数。
我认为这是由 XDebug 引起的,我尝试更改 xdebug.collect_params 的值来修复它,但没有成功。事实上,这个配置只是改变了现在有函数调用参数的 xdebug 默认报告的显示。
我做了一个测试脚本来测试它,所以我让你看看。
<?php
$config = 'xdebug.collect_params';
echo "Current value of $config is<br />\n";
var_dump(ini_get($config));
ini_set($config, 3);
function fallDeepToHell($param) {
echo 'Param is : ' . $param . "<br>\n";
throw new Exception();
}
try {
fallDeepToHell('from heaven');
} catch(Exception $e) {
var_dump($e->getTrace());
var_dump($e->getTraceAsString());
}
fallDeepToHell('from heaven');
Run Code Online (Sandbox Code Playgroud)
我的开发服务器上的结果是
我在 FPM 中使用 PHP 7.4。
我的 php.ini 更改:
max_execution_time = 30
memory_limit = 128M
error_reporting = E_ALL
display_errors = On
display_startup_errors …Run Code Online (Sandbox Code Playgroud) 我正在尝试Xdebug 3在 PHP 容器中进行配置 ,并 根据文档 https://xdebug.org/docs/all_settings#mode设置 XDEBUG_MODEenv 变量,但 显示. 怎么修?offxdebug_info()mode=develop
Dockerfile:
FROM php:7.4.11-fpm
…
ENV XDEBUG_MODE=off
ENV XDEBUG_CONFIG=""
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug \
...
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml:
services:
php:
build:
dockerfile: ${PWD}/.devcontainer/Dockerfile
image: php-fpm
environment:
XDEBUG_MODE: ${XDEBUG_MODE} // off
XDEBUG_CONFIG: ${XDEBUG_CONFIG}
Run Code Online (Sandbox Code Playgroud)
xdebug信息:
php -r 'xdebug_info();'
Version => 3.0.0
Support Xdebug on Patreon, GitHub, or as a business: https://xdebug.org/support
Feature => Enabled/Disabled
Development Aids => ? disabled
Coverage => ? disabled …Run Code Online (Sandbox Code Playgroud) 我的 phpunit 容器有这个 dockerfile:
FROM php:8.1-fpm-alpine
WORKDIR /var/www/html
RUN apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/community/ --allow-untrusted gnu-libiconv
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so php
ENV PHP_MEMORY_LIMIT=1G
ENV PHP_UPLOAD_MAX_FILESIZE: 512M
ENV PHP_POST_MAX_SIZE: 512M
RUN docker-php-ext-install pdo
RUN apk add --no-cache libpng libpng-dev && docker-php-ext-install gd && apk del libpng-dev
RUN apk update \
&& apk upgrade \
&& apk add --no-cache \
freetype \
libpng \
libjpeg-turbo \
freetype-dev \
libpng-dev \
jpeg-dev \
libwebp-dev \
libjpeg \
libjpeg-turbo-dev
RUN docker-php-ext-configure gd \
--with-freetype=/usr/lib/ \ …Run Code Online (Sandbox Code Playgroud)