php - 允许服务器解析 html 文件中的 php 后,命名空间不起作用

标签 php .htaccess namespaces

我已将以下内容放入服务器的 .htaccess 文件中:

Options +ExecCGI
AddType application/x-httpd-php .php .htm .html
AddHandler x-httpd-php5 .php .htm .html

我正在使用 GoDaddy 托管。

执行此操作后,我在如下一行中收到解析错误:
namespace {

错误是:Parse error: syntax error, unexpected '{'
执行此操作时:namespace Name { ,我收到此错误:Parse error: syntax error, unexpected T_STRING
顺便说一下,命名空间的使用来自第三方库,而不是我自己的代码。

我究竟做错了什么?

最佳答案

尽管下面所说的所有内容可能对您的情况有所帮助并且适用,但似乎问题已经在您的 .htaccess 文件中引入了 than 行:
AddHandler x-httpd-php5 .php .htm .html
... 将旧版本的 PHP 设置为请求处理程序。换成...
AddHandler x-httpd-php5-4 .php .htm .html
将命名空间声明移到 HTML 文件的顶部。报价the docs :

The only code construct allowed before a namespace declaration is the declare statement, for defining encoding of a source file. In addition, no non-PHP code may precede a namespace declaration, including extra whitespace.


<html> 
<?php namespace MyProject; // fatal error 
                           // namespace must be the first statement in the script 
?>

请注意,当像这样使用时,您可以将 HTML 内容放在不同的命名空间之间(它只是应该位于顶部的第一条语句):
<?php
   namespace One;
   function foo(){}
?>
<p>Got some <?= __NAMESPACE__ ?> for ya!</p>
<?php
   namespace Two;
   function foo(){}
?>

(很容易看出技术上 <p> 属于第一个命名空间,但这并不重要)。

关于php - 允许服务器解析 html 文件中的 php 后,命名空间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32049968/

相关文章:

apache - 如何使用 HTACCESS 将特定页面重定向到错误页面

apache - mod_rewrite 重映射文件夹

php - 找不到带有 php 命名空间的类

php - Paypal api成功或失败

php - 如何避免序列化程序将双引号转义为\u0022?

php - 单篇文章的多个类别(PHP MYSQL)

php - 如何创建/使用基于 namespace 的 PHP 自动加载器来加载类以及常量和函数?

php - ASP.Net 等效于 PHP 的 file_get_contents ( 'php://input' );

apache - https 到 http 重定向

java - Xpath和命名空间,选择节点迭代器