2017-07-28 34 views
0

当我开始我的最新项目时,我学会了如何使用xdebug扩展,并从此一直使用它。现在我准备启动服务器并使用此项目进行生产,并且我的网站无法正常工作。前端页面似乎也起作用,这也是基于php的,但后端端点查询数据库并将一些数据返回到前端总是返回500状态码。所以我附加了xdebug并找出如何远程运行它,并且所有页面都开始工作,而不需要更改任何代码。我进入php.ini文件并关闭它,页面继续工作。由于这是一个AWS EC2服务器,因此我删除了该实例并创建了一个运行我编写的用于安装所有软件的相同初始化脚本的新实例,并得到完全相同的问题。直到我按照xdebug安装说明并重新启动apache2,服务器才工作。即使在我通过php.ini文件取消xdebug扩展时,代码仍然可以继续工作。即使在系统重新启动后,它仍然继续工作,因此无论什么问题得到解决似乎都是永久性的。只有在使用Xdebug扩展时,代码才有效

构建和附加xdebug扩展以及重新启动Apache2的操作对LAMP堆栈会产生什么影响,即使在关闭扩展之后,它也能使我的代码正常工作?我的服务器是使用脚本构建的,脚本运行各种apt-get install命令,但没有提供二进制文件,因为它们都是社区提供的程序。像发条一样,每次重建机器时都会中断,直到我应用扩展。如果必须的话,我可以将它自动化到我的构建脚本中,但是这让我有点疯狂,我不明白发生了什么。

+0

看看错误日志。在默认情况下,Ubuntu位于'/ var/log/apache2/error.log',你需要root来访问它。您可以运行如下命令:'sudo tail -f/var/log/apache2/error.log'将其打开并保持打开状态以进行监视。然后重新加载错误页面几次,看看出现了什么。我想下面,你正在调用一些内部xdebug函数,没有扩展名不存在。这或安装xdebug它覆盖了一些php.ini值的错误,并且错误总是发生,你只是没有看到它。 –

+0

谢谢,对于这个问题以及未来的问题我非常有用。我需要更好地了解Linux服务器上可以使用哪些日志。 –

回答

0

我建议你尝试找到诸如var_dump()或任何在你的代码前缀由xdebug_任何Xdebug的特定函数的调用: https://xdebug.org/docs/all_functions

+1

'var_dump'是一个PHP标准函数。 [参考文献](http://php.net/manual/en/function.var-dump.php)。但否则我同意。 – linden2015

+0

代码中的任何地方都没有提及xdebug,但值得一试。谢谢 –

2

当服务器发送一个500错误,通常你会得到一个条目php_error.log。所以首先检查这个文件。也许在内存限制上有一些差异,最大值。后变量等

+0

这听起来像个好主意。打算拆掉机器并建立另一个机器并尝试。 –

+0

我找不到这个特定的日志,也不能在ini文件中找到它的引用,因为默认情况下它必须指定设置。我通过/var/log/apache2/error.log获得了必要的信息,每@ jonathan-kuhn评论建议。 –

0

什么将构建和附加的xdebug扩展,并重新启动Apache2,做一个LAMP堆栈,这将使我的代码工作,即使在关闭扩展后?

安装一个软件可以带来另一个。如果你sudo apt install php-xdebug没有安装php,它会安装php。

+0

这就是我的想法。我只是按照他们提供的xdebug说明将他们的phpinfo页面文本粘贴到其网站上的安装配置工具中。它实际上涉及下载tarball和编译源代码,而不是通过包管理器安装包。但我不知道make文件中发生了什么。 –

+0

其他人看日志的建议发现了这个问题,但你的建议是安装一件东西可能会带来必要的依赖关系。我的代码依赖于SimpleXMLElement,当你安装PHP时,它显然在Ubuntu 16.04中默认没有安装(通过php7.0-xml)。 –

相关问题