gpt4 book ai didi

php - 如何从 CLI 调试 PHP CLI 脚本

转载 作者:可可西里 更新时间:2023-10-31 22:44:54 24 4
gpt4 key购买 nike

有人知道如何从 CLI 调试 CLI PHP 脚本吗?!?我不想调试 PHP 网页 - 我没有 PHP 网页。我也不想调试远程脚本——我正在这个系统上运行/调试。我不想(此时)尝试获取一些 IDE(Eclipse、PhpStorm 或其他)来调试 CLI PHP,而我只想在 Linux 命令行本身调试一些 PHP CLI 脚本。在 Perl 中,这将是简单的 perl -d <script.pl> 。调试脚本,对我来说,不是找出编译错误或其他简单的事情。对我来说,它是设置断点、运行代码、检查变量的内容以及能够在调试器中任意执行或评估(' ')。

当然,稍后我想将它配置到我选择的 IDE 中(此时是 Eclipse),但我还没有设法让它工作。从 CLI 调试 PHP CLI 脚本对我来说是一个好的开始。

谢谢。

我不知道为什么我在发表评论时限制了字符数。也许我可以在这里添加更多文字。

以下是我为在 Eclipse 中使用 xdebug 和/或 Zend 调试器所做的尝试:

  • 基础 Eclipse 版本 Mars.1 Release 4.5。
  • Eclipse PDT UI 插件版本 3.7.0.2015112
  • 尝试使用 pecl install xdebug 安装 xdebug。说我需要将“zend_extension=xdebug.so”添加到 php.ini。真的吗?哪个php.ini?我有几个:

Andromeda:sudo find / -xdev -name php.ini /etc/php5/cli/php.ini /etc/php5/apache2/php.in /opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php53/php.ini /opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php.ini /opt/eclipse/plugins/com.zend.php.debug.debugger.php56.linux.x86_64_13.0.1.v20151112-2045/resources/php56/php.ini Andromeda:

  • 我把 zend_extension 放在/etc/php5/cli/php.ini 和/etc/php5/apache2/php.ini 中。制作了一个 phpinfo.php 页面,我在那里看到了 Xdebug(是的!)。在 Eclipse 中配置调试配置以使用 xdebug 并尝试调试:

Launching renameUser has encountered a problem. An internal error occurred during "Launching renameUser" java.lang.NullPointerException.

天哪...

  • 我还安装了 Zend Debugger 并将以下内容添加到相同的两个 php.ini 文件中:

zend_extension=/usr/lib/php5/20121212/ZendDebugger.so zend_debugger.allow_hosts=127.0.0.1/32, 192.168.0.0/16 zend_debugger.expose_remotely=always

  • 更改调试配置以使用 Zend Debugger 并尝试进行调试。收到:

Error launching 'renameUser' The debug session could not be started. Please make sure that the debugger is properly configured as a php.ini directive.

  • 重新启动 Eclipse,现在调试器尝试运行,但只是以 255 退出值终止,试图运行/opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php-cgi。为什么它运行 php-cgi 超出了我的范围。我说过这是 CLI 而不是 CGI。无论如何,当我尝试从命令行运行它时,我得到以下信息:

Andromeda:/opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php-cgi /opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/php5/php-cgi: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory

  • 在/opt/eclipse/plugins/org.zend.php.debug.debugger.linux.x86_64_5.3.18.v20110322/resources/lib 中找到一个 libiconv.so.2 并设置 LD_LIBRARY_PATH 以包含它,但这只是失败在所有状态下启动调试器以确保调试器已正确配置为 php.ini 指令...呃!

其他奇怪的东西:

  • 当 Eclipse 启动时,它无法打开我的基于 RSE 的项目,因此将上次运行的编辑缓冲区显示为空
  • Eclipse 将不再退出!选择文件:退出。什么都没发生。单击标题栏中的 X - 没有任何反应。现在我必须杀死它才能关闭它!

最佳答案

在命令行调试时你需要告诉PHP你也想调试

http://xdebug.org/docs/remote

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

假设 xdebug 已启用(它在哪个 .ini 文件中并不重要,但每个操作系统都有一个标准位置,通常在名为 xdebug.ini 的 conf.d 文件夹中,它是自动包含的)

这允许您调试 cmdline 脚本。

我个人使用带有 Vdebug 扩展名的 Vim(vim 的 xdebug)进行调试,除了命令行之外什么都不需要

关于php - 如何从 CLI 调试 PHP CLI 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34146594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com