直截了当
有一个专有产品可以成功地帮助我进行调试,并将其称为PhpDump 。
一次,CMS MODX提示我编写调试器。 当然,PHP中有var_dump,phpConsole和xDebug。 但是我在这里与我的PhpDump在一起 。
我会说解决方案不是完美的,但很实用。
您喜欢多少取决于您。
这是一些外观截图。


在本文中,我将告诉您如何在CMS MODX Revo中安装和使用它
要求条件
Apache + PHP 7,CMS MODX Revo 2.7
Git +作曲家
下载并安装
与项目分开为PhpDump创建目录。 由于您可能想在不同项目的本地服务器上使用它。 为此,没有必要在任何地方安装它。
在目录中,使用以下数据创建一个composer.json
文件:
{ "require":{ "Alpa/PhpDump":"1.*" }, "repositories": [ { "type": "git", "url": "https://github.com/ALexeyP0708/PhpDump.git" }, { "type": "git", "url": "https://github.com/ALexeyP0708/EntityDetails" } ] }
在终端中,键入$ composer install
通过composer安装时,该项目将位于[directory install]/vendor/PhpDump
- 通过GIT安装
终端命令
$ git clone https://github.com/ALexeyP0708/PhpDump.git
或解压缩zip存档。
可以在这里下载GitHub
安装PhpDumpConsole
在Google Chrome浏览器中,转到“ 扩展程序”部分,打开开发人员模式(在右上角),然后
。
指定目录[directory PhpDump]/ChromeExtension/PhpDumpConsole_v1.1
。
面板上将出现一个红色的十字线图标-一个圆圈。 如果单击时齿轮未变为蓝色,则说明服务器不支持PhpDump或客户端未通过授权。
健康检查
检出文件[dirictory Php Dump]/tests/test_debugManager.php
如果通过作曲家安装,则需要指定到自动加载器文件的正确路径。
为此,请替换行
include_once __DIR__.'/../vendor/autoload.php';
在
PhpDump的安装目录必须具有Web访问权限,并且可以自由路由到脚本。
假设您将PhpDump设置为/sites/www/mysite/TestPhpDump
并访问网站http://mysite/
然后运行测试脚本
http://mysite/TestPhpDump/tests/test_debugManager.php
具有所生成错误的页面将开始。 启动Google Chrome控制台,然后在应用程序面板中单击齿轮。 页面将重新加载,齿轮将变成蓝色。 现在,所有信息将显示在控制台中。
如何在您的项目上运行
在运行项目脚本的页面的顶部,必须指定:
include_once '[directory phpdump]/vendor/autoload.php';
您需要了解PhpDump在声明字符串数据的情况下运行。
您还应该考虑到PHPdumpConsole不仅会为主页显示转储,还会为Ajax请求以及由服务器动态生成的前端脚本显示转储。
如果您的项目随机访问不同的场景(例如,页面是通过Index.php加载的,而ajax请求是通过other.php发出的,或者浏览器从script.js.php加载了动态js生成的脚本),则可能会发生无法预料的情况。
在这种情况下,所有路由都必须通过一个脚本文件。 例如,通过/index.php。 或应用其他解决方案,如使用MODX所做的(如下所述)。
使用CMS MODX在测试站点上启动
有几种在CMS MODX上运行PhpDump的解决方案。
第一个解决方案-根据上述说明,将代码写入您网站的index.php文件中:
include_once '[directory phpdump]/vendor/autoload.php'; new PhpDump\InitDump();
在这种情况下,PhpDump将在调试模式下工作并捕获错误。
但是,将在MODX日志中显示的所有内容以及系统抑制的错误,
将不会显示在PhpDumpConsole中
第二种选择:官方-不进行自定义。 这是ErrorHandler类以及MODX参数中相应变量的设置的扩展。
该解决方案具有缺点。 如果将数据错误地输入到设置中,则站点将崩溃。 而且这种情况只能通过数据库来纠正。
因此,省略了此选项的描述。
在此选项中,您可以看到所有生成的PHP错误。 但是您不会看到生成的日志,该日志中会出现很大一部分的MODX错误。
我个人介绍的第三个选项是通过文件'dev_route.php'设置脚本调用的完整路由。
使用.htaccess,所有非静态调用都将定向到dev_route.php文件。
注意:直到最后,该行为尚未得到调查。 也许某些应用程序可能会向站点提供不同的请求逻辑,但dev_route.php中未描述其路由。
注意: .htaccess尚未完全完成。 并非所有静态资源都在其中定义。 因此,它们将在dev_route.php中进行处理
我们备份旧的.htaccess
文件。
在站点目录的根目录中创建一个新的.htaccess
并输入代码:
# file .htaccess #---------------------------------------- # . - . RewriteCond %{REQUEST_URI} /manager/min/assets/.* RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} /manager/assets/.* RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} /assets/.* RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ - [R=404,L] #--------------------------------------- #--------------------------------------- # RewriteCond %{REQUEST_URI} /manager/min/assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_URI} /manager/assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_URI} /assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteRule ^(.*)$ $1 [L] #--------------------------------------- #--------------------------------------- # c . RewriteCond %{REQUEST_FILENAME} .*\.js$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.html$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.css$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.gif$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.jpg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.jpeg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.png$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.svg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.woff$ RewriteRule ^(.*)$ $1 [L] #--------------------------------------- #--------------------------------------- # . RewriteCond %{REQUEST_URI} /manager(?:|/.*) RewriteRule ^(.*)$ dev_route.php [L] RewriteCond %{REQUEST_URI} /connectors(?:|/.*) RewriteRule ^(.*)$ dev_route.php [L] #--------------------------------------- #--------------------------------------- # . RewriteCond %{REQUEST_URI} .* RewriteRule ^(.*)$ dev_route.php?q=$1 [L,QSA] #---------------------------------------
我们在站点目录的根目录中创建dev_route.php
文件,并在其中dev_route.php
代码:
<?php include_once '[yor path php dump]/vendor/autoload.php';
接下来,在文件core\xpdo\xpdo.class.php
(对于core\xpdo\xpdo.class.php
revo 2.7)中,格式化日志方法,如下所示:
public function log($level, $msg, $target= '', $def= '', $file= '', $line= '') { \deb::print($msg."=>[$target][$def][$file][$line]",'LOG'); $this->_log($level, $msg, $target, $def, $file, $line); }
仅此而已。 一切都应该为您正常工作。
在管理面板中进行测试。 如果管理面板加载良好,则说明一切均已完成。
使用方法:
安全设定
PhpDump当前不适用于专业工作,因此安全性要求极低。
如果您决定将PhpDump附加到Internet上的现有站点,则在[目录phpdump] /src/include_file_in_index.php文件中,更改以下授权设置:
$settings=[ 'hashkeys'=>[ 'HashKey'=>[
在控制台的客户端上的“ Java Script Context”下拉列表中,选择“ PhpDumpConsole”,然后在控制台中输入代码
dm.setHashKey({ hashkey:'HashKey', greeting_server:'greeting_server', greeting_client:'greeting_client' }); // hashkey , greeting_server, greeting_client . dm.bindHashKeyDomain({hashkey:'HashKey',domain:'global'}); // domain:'your_domain' // domain='global' .
其他bun头
通过控制台,您可以控制打开/关闭回溯,过滤输出。
您可以在GitHub页面上的说明中找到所有这些内容
PhpDump不仅可以用于MODX,而且还可以用于其他项目。 最重要的是要知道如何系紧。
PS:如果您是MODX的粉丝,那么很快您就会发现新的包子:形成分隔和征服摘要的方法。 逻辑代码段和模板代码段可以自组织和相互分组,从而结合使用2x-3x代码段可以扩展行为。
编写代码片段具有灵活性。 程序员将不需要描述编写代码段的整个周期,而只需描述一个单独的部分,即可描述其与其他代码段进行进一步交互的API。
谢谢大家