2011-04-12 86 views
1

阻断代码,我有下面的代码,它在我的本地XAMPP和测试的Linux虚拟主机伟大的工作:标签/缩进的Windows Server

<?php 
// include config file 
include('config.php'); 

// get page intel 
$_PAGE = switchPage($_GET); 

// require language file 
require_once("languages/".$_PAGE['language'].".lang.php"); 

// include header file 
include('includes/header.inc.php'); 
?> 

      <section id="main" class="clearfix"> 

       <?php 
       // include correct page 
       include($_PAGE['include_path']); 
       ?> 

      </section> 

<?php 
// include footer file 
include('includes/footer.inc.php'); 
?> 

我的客户拥有PHP 5.2.6安装在Windows服务器。托管公司声称,在下面snipet中使用的标签/缩进不适用于windows php托管。

  <?php 
      // include correct page 
      include($_PAGE['include_path']); 
      ?> 

所以他们声称我的代码是无效的PHP代码..有人可以请教吗?我不想重写我的代码只是因为我使用的所有缩进来保持我的代码清洁和可读。

+0

您的代码是有效的PHP。定义'不起作用'。 – Maerlyn 2011-04-12 16:03:29

+0

这完全是无稽之谈。与大多数现代语言一样,PHP对于空白和布局几乎没有规定。 – 2011-04-12 16:12:20

回答

0

如果您使用制表符或空格,则不会有任何区别。这仍然是有效的PHP。

+0

单行答案=使其成为评论plz。 – mario 2011-04-12 16:17:01

1

所以他们声称我的代码是无效的PHP代码..有人可以请教吗?

一方面,他们充满了它。这是有效的代码。

另一方面,该代码可能有问题 - 如果这是在文件的开始处开始<?php标记。这是PHP可以生成的臭名昭着的“无法发送头文件,头文件已发送”错误的第二个原因。每个PHP文件不应该有任何空格在打开PHP标记之前。

该标记位于文档的中间,因此是而不是有问题。

+0

但比我应该得到一个错误,说“不能发送标题,..”。我没有得到狗屎.. – 2011-04-12 19:27:50

+0

@Sam,尝试上传一个简单的文件,只包含'<?php phpinfo(); ?>看看它是否有效。如果没有,那么主机坏了。 – Charles 2011-04-12 20:06:15

0

也许发生的事情是,你正在用换行符(这是linux使用的)而不是回车+换行符(窗口)结束每一行。

如果新行字符被忽略,那么文件中的所有代码都将在一行中结束,从而导致各种问题(例如,像'// hello'这样的注释将在一页中途注销,最终将注释掉所有后面的代码)。

尝试将文件转换为Windows格式(CR + LF)。你可以用一个像Notepad ++这样的好文本编辑器来完成它。

和其他人一样,你如何缩进你的代码并不重要。

+0

PHP是行结束不可知的。它将成功读取和解析具有LF,CRLF或普通旧CR的文件,供您为观众中的史前Mac粉丝使用。 (在5.3.6中测试) – Charles 2011-04-12 16:41:45

+0

好吧,我遇到了这个问题,我之前用Linux上的服务器上的文件(仅CR)保存了文件。不能伤害尝试:) – 2011-04-12 16:46:13