标签: xdebug

从Docker容器内部使用XDebug进行远程调试不起作用

我正在尝试设置一个停靠的AMP环境,无法让远程调试器工作.我的设置如下:

我有一个运行mysql的数据库容器,它像魅力一样工作.我使用以下Dockerfile构建了一个Docker镜像'phpmysqli'

FROM php:apache

RUN docker-php-ext-install mysqli mbstring

# zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
RUN pecl install xdebug
RUN echo 'zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so' >> /usr/local/etc/php/php.ini
RUN touch /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_enable=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_autostart=0 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_connect_back=1 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_port=9000 >> /usr/local/etc/php/conf.d/xdebug.ini; \
    echo xdebug.remote_log=/tmp/php5-xdebug.log >> /usr/local/etc/php/conf.d/xdebug.ini;

RUN echo 'date.timezone = Europe/Berlin' > /usr/local/etc/php/conf.d/date.ini
Run Code Online (Sandbox Code Playgroud)

我打电话

docker run --rm -ti  --name web -p 127.0.0.1:8080:80 -v /path/to/projects:/var/www/html --link db:db  phpmysqli
Run Code Online (Sandbox Code Playgroud)

在这个phpinfo分别php -i显示xdebug 2.3.2启动并运行之后.

接下来,我在IntelliJ IDEA中设置一个名为'Docker'的服务器,其中包含Host 127.0.0.1,Port 8080和Debugger Xdebug.我在docker …

php remote-debugging xdebug intellij-idea docker

18
推荐指数
2
解决办法
1万
查看次数

使用VSCode和Docker调试PHP

我正在尝试使用VSCode调试在Docker上运行的PHP应用程序,但没有成功.

在过去,我能够使用运行WAMP Server的VSCode轻松调试我的PHP应用程序,但自从我开始使用Docker后,我无法进行调试工作.在线搜索了几个教程,在StackOverflow上检查了一些线程(例如:Docker和XDebug没有读取断点VSCode),但我仍然无法使其正常工作.

Dockerfile:

FROM php:7.1.8-apache

COPY /cms /srv/app/cms
COPY .docker/cms/vhosts/vhost.conf /etc/apache2/sites-available/cms.conf
COPY .docker/cms/vhosts/vhost-ssl.conf /etc/apache2/sites-available/cms-ssl.conf
COPY .docker/cms/vhosts/certificate.conf /etc/ssl/certs/certificate.conf
COPY .docker/cms/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini

WORKDIR /srv/app/cms

RUN docker-php-ext-install mbstring pdo pdo_mysql
RUN pecl install xdebug 
RUN docker-php-ext-enable xdebug
RUN chown -R www-data:www-data /srv/app/cms
RUN openssl req -x509 -new -out /etc/ssl/certs/ssl-cert-cms.crt -config /etc/ssl/certs/certificate.conf
RUN a2ensite cms.conf
RUN a2ensite cms-ssl.conf
RUN a2enmod rewrite
RUN a2enmod ssl
Run Code Online (Sandbox Code Playgroud)

xdebug.ini

[xdebug]
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9000
xdebug.remote_connect_back=0
xdebug.remote_host='host.docker.internal'
xdebug.idekey='VSCODE'
xdebug.remote_autostart=1
Run Code Online (Sandbox Code Playgroud)

泊坞窗,compose.yml

version: '3.7'
services:
cms:
  build:
    context: . …
Run Code Online (Sandbox Code Playgroud)

php xdebug docker docker-compose visual-studio-code

18
推荐指数
2
解决办法
6960
查看次数

如何在 Ubuntu 上安装 Xdebug?

我正在尝试xdebug在 Ubuntu上安装:

sudo apt-get install php-xdebug
Run Code Online (Sandbox Code Playgroud)

并收到以下错误:

需要获得 806 kB 的档案。此操作后,将使用 4.423 kB 的额外磁盘空间。Err:1 http://ppa.launchpad.net/ondrej/php/ubuntu artful/main amd64 php-xdebug amd64 2.5.5-3+ubuntu17.10.1+deb.sury.org+1 404 Not Found E: Failed to获取 http://ppa.launchpad.net/ondrej/php/ubuntu/pool/main/x/xdebug/php-xdebug_2.5.5-3+ubuntu17.10.1+deb.sury.org+1_amd64.deb 404 未找到 E : 无法获取一些档案,也许运行 apt-get update 或尝试使用 --fix-missing?

我怎么解决这个问题 ?

php xdebug

18
推荐指数
4
解决办法
4万
查看次数

xdebug是否美化了var_dump?

根据这篇文章http://devzone.zend.com/article/2803,var_dump应该美化输出.

我已经使用PHP Version 5.3.3-1ubuntu9.2在我的本地主机上安装了xdebug.我在php.ini输出中有这个.

该程序使用Zend脚本语言引擎:Zend Engine v2.3.0,版权所有(c)1998-2010 Zend Technologies with Xdebug v2.1.0,Copyright(c)2002-2010,Derick Rethans

但是,当我使用var_dump()时,没有任何变化.

xdebug真的美化了var_dump输出吗?

如果是这样,我该如何解决?

这是我在php.ini中的xdebug的详细信息

xdebug
xdebug support  enabled
Version     2.1.0

Supported protocols Revision
DBGp - Common DeBuGger Protocol     $Revision: 1.145 $

Directive   Local Value Master Value
xdebug.auto_trace   Off Off
xdebug.collect_assignments  Off Off
xdebug.collect_includes On  On
xdebug.collect_params   0   0
xdebug.collect_return   Off Off
xdebug.collect_vars Off Off
xdebug.default_enable   On  On
xdebug.dump.COOKIE  no value    no value
xdebug.dump.ENV no value    no value
xdebug.dump.FILES   no value    no value
xdebug.dump.GET no value …
Run Code Online (Sandbox Code Playgroud)

xdebug var-dump

17
推荐指数
2
解决办法
1万
查看次数

有效地收集有关新PHP项目内部工作的信息.工具?技术?脚本?

我很快就会加入一个已经开发了几年的PHP项目.这将是巨大的,稀疏文档,许多文件,成堆的代码,没有合理的质量水平是预期的.

您将如何收集尽可能多的有关正在发生的事情的信息?

  • 自动加载不被预期的,至少不广泛,所以 inclued可能做好揭示的相互依赖关系.

  • 使用phpDocumentor摘要项目文件可能会了解存在哪些类/方法/函数.

  • 也许phpCallGraph用于方法/函数关系.

  • 使用XDebug分析一些通用用例, 以了解层次结构和概念.

  • 检查重要的日志文件...检查警告,弃用的用法,错误.

  • phpinfo().

  • 也许提取所有注释并将它们处理成html文件.

没有涵盖单元测试,数据库,....

你会怎么做?您对提到的工具有什么经验可以充分利用它们?

您可以假设任何必要的条件.

提取哪些统计信息可能有用?

有人有这些工具的经验吗?

编辑"PHP工具的质量检查":

来自Bryan Waters的编辑2回答:

为PHP项目设置部署/构建/ CI循环 - 由Pekka建议

编辑3

刚刚发现这篇由Gabriele Santini撰写的PDF文章 - "代码的统计分析 - 收听你的PHP代码".这就像一个金矿.

php profiling xdebug inclued

17
推荐指数
1
解决办法
565
查看次数

XDebug与Aptana Studio 3

我想知道如何让XDebug与Aptana Studio 3一起工作(我已经在这台机器上安装了Aptana Studio 3和XAMPP).

你知道最近的一篇文章告诉我如何做到这一点并解释了XDebug吗?我没有经验也没有任何关于XDebug的知识,我寻找文章,但所有看起来都过时了.

php aptana xdebug aptana3

17
推荐指数
2
解决办法
3万
查看次数

PHP Eclipse Xdebug一次两个或多个请求

我在任何地方都找不到任何相关信息.我有一个由HTTP请求触发的长时间运行进程,然后由HTTP请求触发的另一个短进程检查长时间运行进程的状态.两者都是通过AJAX调用的.第一个是通过按钮单击,第二个是连续超时.

如果我一次运行一个请求,那么它们就可以工作了.问题是,在运行第一处理时,Eclipse的完全忽略所述第二请求(如果第一个没有结束),但我需要同时第一请求仍在处理要调试的第二请求

我甚至尝试独立于调试器运行第一个进程,只是尝试将调试器用于第二个进程.但是我似乎无法像第一个那样在调试器中捕获第二个进程.

理想情况下,我希望能够同时调试2个或更多进程.

看来这可以使用Eclipse和Java完成.但PHP支持看起来很薄.

php eclipse xdebug eclipse-pdt

17
推荐指数
1
解决办法
934
查看次数

根据代码内容加载不同的php.ini文件

我真的很不知道发生了什么 - 这一切都始于PHPUnit Error: No code coverage driver is available在尝试运行测试覆盖率报告时的错误,最后我调试到下面描述的可复制集.但要设置阶段 - 我使用的是Laravel 5.5,Xdebug 2.5.5,PHPUnit 6.5.5.我的测试代码说明了这个问题:

<?php

use Tests\TestCase;

class A extends TestCase
{
    public function testA()
    {
        echo( get_cfg_var('cfg_file_path')); exit;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出 C:\Users\xxx\AppData\Local\Temp\7598.tmp

将它与输出正确的php.ini路径的代码进行比较:

<?php

use PHPUnit\Framework\TestCase;

class A extends TestCase
{
    public function testA()
    {
        echo( get_cfg_var('cfg_file_path')); exit;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出: C:\server\php\php.ini

怎么会这样?加载的php.ini文件如何根据执行的代码进行更改?更好的是 - 如何加载我正确的php.ini文件(启用了xdebug),而不是这个冒号?

在这两种情况下,测试都是使用 phpunit tests\unit\a

文件夹结构是:

Laravel Project
????tests
    ????Unit
        ????A.php
Run Code Online (Sandbox Code Playgroud)

php phpunit xdebug laravel-5.5

17
推荐指数
1
解决办法
361
查看次数

防止xdebug在索引文件的第一行中断

我有Eclipse PDT的xdebug设置.每次我启动调试会话时,Eclipse都会在我的根index.php文件的第一行中断.是否有可能阻止这种行为?

php eclipse xdebug eclipse-pdt break

16
推荐指数
1
解决办法
7718
查看次数

php存在"撬"等价物吗?

我在ruby上有点被宠坏了,我习惯使用pry应用程序的惊人设施.我将一个应用程序锁定为1个线程,然后让pry在httpd控制台中弹出,然后能够解决很多问题的底部,但是我没有发现任何类似于PHP的可用内容.是否有类似或接受的解决方案,这样的PHP用于在执行期间调试和跟踪数据结构等?

php debugging xdebug read-eval-print-loop pry

16
推荐指数
1
解决办法
4884
查看次数