debugging Laravel和Xdebug -我无法调试,因为出现致命错误:找不到所有控制器都扩展它的控制器类

xxslljrj  于 2022-12-04  发布在  其他
关注(0)|答案(3)|浏览(137)

所以我设法为PHP 7(7.0.4)配置了Xdebug(2.4.0)。但是我不能在我的Laravel项目中使用它。我试图调试我的CartController中的一个代码块。但是它说有一个错误,因为它找不到我的CartController扩展的Controller。这是我在PhpStorm控制台中得到的结果:
PHP系统发生严重错误:在C:\Users\Nikolay\Dropbox\store\app\Http\Controllers\CartController.php的第14行没有找到类'App\Http\Controllers\Controller' PHP 1. {main}()C:\用户\尼古拉\Dropbox\商店\应用\Http\控制器\购物车控制器.php:0
致命错误:在第14行的C:\用户\Nikolay\Dropbox\商店\应用程序\Http\控制器\CartController.php中找不到类“应用程序\Http\控制器\控制器”
调用堆栈:2.1491 376944 1. {main}()C:\用户\尼古拉\Dropbox\商店\应用程序\Http\控制器\购物车控制器.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 function addItem(Request $request, $product_id) {...}

    public function deleteItem($product_id, $size) {...}

    public function showCheckout() {...}

    private function calculateTotalPrice() {...}
}
xj3cbfub

xj3cbfub1#

我可能搞错了......但听起来您似乎只是在尝试调试控制器,而不进行自举/路由等操作?
您的应用程序在服务器上工作,因为所有的引导、示例化、依赖注入等都已完成。
要调试应用程序流,您可以在控制器方法中使用断点调试public/index.php,然后在...之前在index.php中使用要调试的路由手动设置/覆盖$_SERVER['REQUEST_URI'],或者安装xdebug浏览器扩展,在PHPSorm中启动调试侦听器,然后在浏览器中访问您的路由。

z9gpfhce

z9gpfhce2#

在Laravel项目的根目录中,我创建了一个.vscode文件夹,在这个新文件夹中,我创建了一个launch.json文件,包含以下内容:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Listen for XDebug",
      "type": "php",
      "request": "launch",
      "port": 9000,
      "pathMappings": {
        "/var/www/html": "${workspaceFolder}/"
      },
      "xdebugSettings": {
        "max_data": -1,
        "show_hidden": 1,
        "max_children": 100,
        "max_depth": 5
      }
    }
  ]
}
kyks70gy

kyks70gy3#

我在使用任何IDE编辑器(使用netbeans或VS代码)时都遇到了同样的问题。问题是我从主index.php(自动加载器文件)以外的文件开始调试。当我从index.php文件开始调试时,一切都开始工作了。无论如何,我都会逐步解释如何纠正
1.找到正确的php.ini文件。在/var/www/html/中创建一个info.php文件并写入
然后在浏览器中浏览此文件并找到php.ini。同时从此处找到您的系统所具有的xdebug版本。
1.首先配置xdebug(在这个php.ini文件中)。有两个主要的xdebug版本(截至编写本书时)。a. XDebug 2 b. XDebug 3
在这个php.ini文件的最后创建一个xdebug部分。

[xdebug]
  1. XDebug 2具有这些设置
    远程xdebug.so=远程处理程序=dbgp xdebug.远程主机=本地主机xdebug.远程端口=9000
    将路径更改为xdebug。使用以下命令查找xdebug
find /usr/lib/php -iname xdebug.so

如果你安装了多个版本的php,你会得到不止一个xdebug。要知道你将使用哪一个,然后只是删除和安装xdebug,以及在哪个文件夹中,它消失和重新出现,你需要的xdebug。例如,要知道php7.4正在使用什么版本,删除php7.4-xdebug模块,然后安装它;使用

sudo apt remove php7.4-xdebug

然后使用

sudo apt install php7.4-xdebug

而Xdebug 3则具有这些设置

zend_extension=/usr/lib/php/20190902/xdebug.so
 xdebug.mode=debug
 xdebug.client_host=localhost
 xdebug.remote_port=9003

某些设置在两个版本中是相同的

xdebug.profiler_output_dir=/tmp
 xdebug.profiler_output_name=cachegrind.out.%p
 xdebug.profiler_enable_trigger=1
 xdebug.profiler_enable=0
 xdebug.remote_autostart=1
 xdebug.idekey="netbeans-xdebug"

将xdebug.idekey更改为vsc(对于VS代码)或phpstorm(对于IDE代码)等
1.启动您的ide并打开您的laravel项目。例如,在VScode中打开文件夹并选择您的项目文件夹
1.打开你的主index.php文件在公共文件夹
并开始调试

相关问题