我已经成功安装了blackfire代理、cli工具和探针,并且工作正常。我在使用 bf 进行分析时禁用了 xdebug 模块。
现在我想像以前一样使用xdebug,但是xdebug不起作用,它只是不会进入调试会话。没有断点甚至无法xdebug_break工作。生产者网站上的一句话说:
已知的不兼容性
请注意,不支持使用 debug 编译的 PHP,并且 Probe 可能与 XDebug 或 XHProf 发生冲突;启用探测器时禁用这些扩展。
有没有办法在不卸载整个 blackfire 工具链的情况下禁用 blackfire 代理?将文件移动/etc/php5/conf.d/90-blackfire.ini到备份位置不起作用。
更新
有效的方法是卸载 php 代理sudo apt-get remove blackfire-php。但我很确定一定有更好的解决方案。
所以我设法为 PHP 7 (7.0.4) 配置 Xdebug (2.4.0)。但是我无法在我的 Laravel 项目中使用它。我正在尝试调试 CartController 内的一段代码。但是它说存在错误,因为它找不到我的 CartController 扩展的控制器。这是我在 PhpStorm 控制台中得到的结果:
C:\xampp\php\php.exe -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 C:\Users\Nikolay\Dropbox\store\app\Http \Controllers\CartController.php PHP 致命错误:在第 14 行的 C:\Users\Nikolay\Dropbox\store\app\Http\Controllers\CartController.php 中找不到类“App\Http\Controllers\Controller” PHP 堆栈跟踪: PHP 1. {main}() C:\Users\Nikolay\Dropbox\store\app\Http\Controllers\CartController.php:0
致命错误:在第 14 行的 C:\Users\Nikolay\Dropbox\store\app\Http\Controllers\CartController.php 中找不到类“App\Http\Controllers\Controller”
调用堆栈:2.1491 376944 1. {main}() C:\Users\Nikolay\Dropbox\store\app\Http\Controllers\CartController.php:0
进程已完成,退出代码为 255
当我在服务器上运行应用程序时,应用程序本身没有问题。我该如何解决这个问题以及为什么会发生这种情况?
编辑 - 28/05/2016 - 这是 CartController:
<?php
namespace App\Http\Controllers;
use App\Cart;
use App\CartItem;
use App\Product;
use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;
class CartController extends Controller
{
public function showCart() {...}
public …Run Code Online (Sandbox Code Playgroud) 当我直接访问我的服务器时(通过 homestead/vagrant 设置的 IP 的虚拟主机条目),我的 xdebug 工作得很好。但是,我有一个在 localhost:8080 上运行的解耦前端,它与 laravel 后端服务器通信,但 xdebug 不会触发这些请求。我想XDEBUG_SESSION=PHPSTORM我只需要在来自前端的请求中设置 cookie ,但是我不确定如何使用 vue-resource 来做到这一点,因为我在文档中没有看到任何相关内容。我尝试了以下方法:
Vue.http.headers.common['Cookie'] = 'XDEBUG_SESSION=PHPSTORM'
Run Code Online (Sandbox Code Playgroud)
但是,我收到了Refused to set unsafe header "Cookie"Chrome 的警告。有人对我可以尝试的其他想法有什么想法吗?
我想将所有开发工具与主 php-fpm 和 nginx 容器分开。所以我基本上有3个名为php-fpm 的容器在端口 9000 上运行,nginx在端口 80 上运行,dev-tools。我已经在我的开发工具容器上安装了 xdebug、composer 等,但我很困惑如何配置 xdebug 以便它能够与 php-fpm 容器一起工作并可以调试我的网站?第二个问题 xdebug 需要 php-cli 或 php-fpm 才能运行吗?
#开发工具
FROM php:7.2-cli-alpine
# Install the PHP extensions we need
RUN set -ex \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin -- --filename=composer.phar \
&& apk add --no-cache git \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug
Run Code Online (Sandbox Code Playgroud) 我正在尝试按照本教程在 VS Code 上配置 XDebug:
但在这一点上:
VS Code 不显示 PHP 选项。
我尝试重新安装 VS Code 和 XDebug。我尝试重新安装 php 服务器并更改 PHP 服务器,但没有任何效果。
我创建了其他教程,但向我展示了同样的问题:当我单击 gear 时,只显示不带 php 选项的 launch.json
我在主题配置方面遇到困难
遵循本指南:https://www.strangebuzz.com/en/blog/step-by-step-debugging-with-xdebug-symfony-and-phpstorm
我已经安装了XDEBUG
PHP 7.4.13 (cli) (built: Nov 28 2020 06:24:59) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.13, Copyright (c), by Zend Technologies
with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans
Run Code Online (Sandbox Code Playgroud)
这是我的 xdebug 配置
zend_extension=xdebug.so
xdebub.remote_enable=1
xdebug.remote_mode = debug
xdebug.client_port = 9003
Run Code Online (Sandbox Code Playgroud)
我在控制器中放置了一些断点来检查它是否有效..没有任何反应
如果我尝试验证调试服务器配置,这就是错误
我认为是因为 symfony 中的安全配置,但我也“打开”了子文件夹(公共/测试)的访问权限,但没有成功
有人可以帮我完成这个配置吗?谢谢
[编辑]
正如 @LazyOne 所建议的,我删除了 xdebug 配置中拼写错误的行
zend_extension=xdebug.so
xdebug.remote = debug
xdebug.client_port = 9003
xdebug.log=/media/leandro/Elements/Progetti/s4fgel/xdebug.log
Run Code Online (Sandbox Code Playgroud)
我还尝试修改公共文件夹中的index.php 添加 …
这个问题是关于让 Xdebug 使用托管在 Web 服务器 Docker 实例中的 CLI PHP 脚本。
我有docker 容器:web-server、、varnish-cache。nginx-proxy我能够使用以下 VS Code 启动配置通过浏览器成功调试 Magento 2 网页:
这是新的 XDebug v3,它删除了很多 v2 配置设置
客户端(Windows 10)IP(我的笔记本电脑):192.168.1.150,主机(Ubuntu 20.04)IP:192.168.1.105,使用 Docker 容器托管 IP:172.100.0.2-5
VS 代码启动:
"name": "(Magento 2) Listen for XDebug on 192.168.1.5/105",
"type": "php",
"request": "launch",
"port": 9099,
"stopOnEntry": false, // Set to true to test any script on entry
"log": false,
// Remember to update remote_connect_back or remote_host
// inside xdebug PHP …Run Code Online (Sandbox Code Playgroud) 我将本地开发设置从 Linux 移植到新的 Mac 机器,但在让 Xdebug 在 Mac M1 Pro 机器中与 PhpStorm 配合使用时遇到问题。
我有一个包含 PHP 的容器,其中 Xdebug 安装并配置如下:
zend_extension=/usr/lib/php8/modules/xdebug.so
xdebug.mode=debug
xdebug.idekey=PHPSTORM
xdebug.client_port=9001
xdebug.start_with_request=yes
xdebug.discover_client_host=1
xdebug.log=/var/log/xdebug.log
Run Code Online (Sandbox Code Playgroud)
在 PhpStorm 中,我正在监听端口 9001(我将 9000 用于其他服务)。
以下是 docker 容器内的 Xdebug 日志:/var/log/xdebug.log
/var/www/html/app # tail -f /var/log/xdebug.log
[49] [Step Debug] INFO: Checking header 'HTTP_X_FORWARDED_FOR'.
[49] [Step Debug] INFO: Checking header 'REMOTE_ADDR'.
[49] [Step Debug] INFO: Client host discovered through HTTP header, connecting to 172.18.0.4:9001.
[49] [Step Debug] WARN: Creating socket for '172.18.0.4:9001', poll success, but …Run Code Online (Sandbox Code Playgroud) 我一直在搜寻我能找到的每一种资源,但是空洞的.当我启动调试会话时,我在NetBeans 6.9中收到了可怕的"等待连接"消息.经过多次阅读,大多数人都能够获得phpinfo()来显示它加载了xdebug模块.跟我不一样.
我使用此调用通过SVN下载了源代码
svn co svn://svn.xdebug.org/svn/xdebug/xdebug/trunk xdebug
Run Code Online (Sandbox Code Playgroud)
我切换到xdebug目录,然后在源代码上运行phpize
sudo /Applications/MAMP/bin/php5/bin/phpize
Password:
grep: /Applications/MAMP/bin/php5/include/php/main/php.h: No such file or directory
grep: /Applications/MAMP/bin/php5/include/php/Zend/zend_modules.h: No such file or directory
grep: /Applications/MAMP/bin/php5/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
Run Code Online (Sandbox Code Playgroud)
没什么大不了的!引用的目录甚至不存在.所以,我假设我超越这一点的任何.ini调整是没用的.如果我在哪里做php,我会在/ usr/bin中找到它.这是预装OS的默认php.我不想那个.我需要使用安装了MAMP的php.我无法相信让这件事变得多么令人沮丧!
为了记录,我的php.ini中的xdebug部分如下所示:
[xdebug]
; xdebug config for Linux and Mac OS X
zend_extension="/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.idekey="netbeans-xdebug"
xdebug.profiler_enable=1
xdebug.profiler_output_name=xdebug.cachegrind-out.%s.%p
xdebug.remote_log="/Applications/MAMP/logs/xdebug_log.log"
Run Code Online (Sandbox Code Playgroud)
这是让xdebug工作的许多不同尝试的混合物.所以,我不知道哪些是有效的.
我把自己置于专家的怜悯之下,因为我显然不是其中之一.我完全不知道如何继续这一点.
提前致谢.
我已经阅读了将诸如将PHP参数传递到NetBeans中的帖子,这些帖子包含了一个以symfony url-routing为特色的页面, 但我无法使其工作.
我想运行以下页面:
http://localhost/s/web/frontend_dev.php/travel
Run Code Online (Sandbox Code Playgroud)
所以我首先尝试使用Netbeans 6.9.1进行"本地网站配置".如链接线程中所述,这里存在一个问题,因为我可以指向项目URL和"web/frontend_dev.php"索引文件,但我无法将"/ travel"作为参数,因为Netbeans始终为它添加前缀用?用于我不想要的参数传递.
我提到的线程解决方案应该使用Script Config选项.好吧我可以指向php.exe,我可以在web/frontend_dev.php再次指向索引文件但是虽然我可以传递像/ travel那样的参数但它仍然无法工作,因为它在调用中创建了一个空格:
php.exe ./web/frontend_dev.php /travel
Run Code Online (Sandbox Code Playgroud)
这也不起作用.