每隔一段时间,事情就会在我的本地PHP开发环境中运行,而在我的服务器上的测试环境中,事情却没有。调试这个是一场噩梦。如果我有一个像Rails提供的控制台,调试会简单得多。
有什么类似Rails控制台但是对于PHP?
我应该提一下,我正在使用home-brewn PHP应用程序。
答案 0 :(得分:4)
通过运行php -a
,PHP可以使用基本的交互式shell。它虽然没有基于框架的控制台的铃声和口哨声。
可以在文档中找到更多信息:http://docs.php.net/commandline.interactive
答案 1 :(得分:1)
像webbiedave一样,php是一种语言,Rails是Ruby的框架。但是,您可以在php脚本中插入“断点” - 并从浏览器执行 - 或者如果安装了php-cli,则从CLI执行脚本(这与浏览器不完全相同,但也可能提供更多有用的信息)。
其他一些提示 - 转储每台机器,开发和生产的环境设置(使用一个简单的脚本
<?php phpinfo(); ?>
并比较差异 - 这可能有助于突出为什么某些部分在环境之间失败。
最后你可以用php -a交互式运行php,就像你可以使用irb和ruby一样,虽然在这种情况下它可能没那么有用。
答案 2 :(得分:0)
您可以使用php-cli的-d
和-a
标记来滚动自己的应用程序控制台。它会是这样的:
php -d auto_prepend_file=init.php -a
您的init.php
将是您的应用程序代码引导的任何文件。例如。对于WordPress,这将是wp-load.php。
答案 3 :(得分:0)
php -a
不是很有用。
我建议您编写如下的小脚本并将其放在 / usr / bin 中:
import readline
from subprocess import call
pre_lines = """
ini_set("display_errors", 1);
error_reporting(E_ALL);
date_default_timezone_set("GMT");
"""
if __name__ == '__main__':
try:
call(["php", "--version"])
print
while True:
user_input = raw_input('php> ')
if user_input.strip() == "":
continue
elif user_input.find("=")>=0 and user_input.find("==")==-1:
pre_lines += user_input + ";\n"
elif user_input.find(";")>=0:
call(["php", "-r", "%s\n%s" % (pre_lines, user_input)])
else:
call(["php", "-r", "%s\nvar_export(%s);" % (pre_lines, user_input)])
print
except EOFError:
print "Bye"
except KeyboardInterrupt:
print "Bye"
except OSError:
print "You either don't have PHP installed, or the PHP binary is not in PATH"
如上所述,您将获得readline支持并轻松检查方程值。