【发布时间】:2013-08-13 20:17:21
【问题描述】:
目前我正在尝试使用 Nginx。 我使用通过 repo 安装的最新版本让它工作。 Nginx 独立运行一切正常。 然后我通过可以运行不同版本而不影响生产网络服务器和 php 版本的源安装了 PHP 5.5.1。 (出于测试目的,Nginx 在另一个端口上运行,然后是 80。)
一切都很顺利。编译 PHP 5.5.1 没有错误,安装它,启动 PHP-FPM 并更改 Nginx 配置以在需要时调用 PHP FPM。我的第一个测试网站与这个版本完美配合。然后我尝试运行我创建的另一个网站。为此,我只更改了文档根目录。
然后我得到了非常奇怪的错误:
PHP Fatal error: Call to undefined function apache_request_headers() in [...]
是的,不是真正的错误...所以我删除了该功能以测试网站在删除功能时是否正常运行,该功能在 PHP-FPM/FastCGI 模式下不可用。
然后再次尝试时日志中显示另一个错误:
PHP Parse error: syntax error, unexpected ''INSERT ' (T_ENCAPSED_AND_WHITESPACE) in [...]
注释掉这个变量后(仅用于测试)发生另一个错误:
PHP Parse error: syntax error, unexpected end of file, expecting ')' in [...]
所以我不知道为什么会发生这 2 个错误。第一个当然是改变的系统;功能不可用。
所以我的主要问题是:为什么我的代码在 FPM 模式下导致 PHP 5.5.1 出现这些错误? 该网站在我的本地开发服务器(PHP 5.4 和 Apache)和生产服务器(Apache 2.2 和 PHP 5.4)上完美运行......我没有更改任何代码(除了 db 的配置文件等)。那么有人知道什么会导致这个问题吗?
如果您需要更多信息,尽管问!
编辑:
错误 1:
$sql = 'INSERT INTO ' . TABLE . '
(name)
VALUES
("' . $name . '")
ON DUPLICATE KEY UPDATE name=VALUES(name)';
错误 2:
'TEXT' => text::parse($row['text']),
【问题讨论】:
-
忽略 PHP 5.5.1 和 PHP 4 之间可能存在的差异。您可能在开发环境中遇到这些错误,它们只是被抑制或记录。抛出 error_reporting(-1); ini_set('display_errors', true);在您的开发环境中。
-
我说的是 PHP 5.5.1 和 PHP 5.4。不是 PHP 4。设置 error_reporting(-1); ini_set('display_errors', true);。依然没有。完美运行。一切。
-
抱歉,打错了。我的意思是5.4。 (由于某种原因,我无法编辑该评论)。 5.5 和 5.4 之间存在差异。能否给出第二个错误相关的代码?
-
"PHP 解析错误:语法错误,在 [...] 中出现意外的 ''INSERT' (T_ENCAPSED_AND_WHITESPACE)" 或 "PHP 解析错误:语法错误,文件意外结束,期待 ')' 在[...]”?
-
Charles 要求的是查看实际代码,而不是错误。您所说的问题看起来都像是代码生成的错误,与 FPM 本身无关。如果我们能看到代码,我们可能会提供更多帮助。