我如何使用require_once()?

时间:2012-04-20 07:50:40

标签: php require-once

我创建了一个包含以下内容的PHP页面:

<?php session_start(); ?>
<?php require_once(./classes/MaterialUtil.class.php);
$mUtil = new MaterialUtil(); 
?>

我将MaterialUtil.class.php文件放在D:\ xampp \ htdocs \ drupal \ sites \ all \ themes \ zeropoint \ classes中,但是我收到以下错误消息:

  

解析错误:语法错误,意外'。'在D:\ xampp \ htdocs \ drupal \ modules \ php \ php.module(80):第7行的eval()代码

你能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:2)

错误是由于您没有使用字符串作为文件名,PHP将该点理解为连接运算符;因此,因为在运算符之前没有任何值,PHP给出了一个错误,说它在错误的位置找到了连接运算符。

正如卡拉布罗所说,正确的代码如下:

<?php session_start(); ?>
<?php require_once('./classes/MaterialUtil.class.php');
$mUtil = new MaterialUtil(); 
?>

这是与Drupal没有严格关系的答案的一部分。

你正在做的不是我建议的做法,原因有两个:

  • 您将“classes”目录放在错误的位置。这些文件与启用的主题无关,但它们与正在查看的页面相关。即使您只有一个主题,并且不允许用户为自己选择主题,将这些文件放在主题目录中仍然是错误的。
    将文件放在包含主题的目录中(当新版本可用时需要更新)可能会导致您丢失添加的其他文件,如果您不小心的话。
  • 通过eval()执行PHP,例如,获取要在节点中显示的内容不是您应该做的事情。这是因为:
    • 由于您已为节点使用PHP过滤器,因此该节点仅可编辑为受限制的用户组。 (我不建议允许不受信任的用户使用PHP作为输入格式)
    • 当您拥有需要执行的PHP代码时,最好创建一个为该站点启用的自定义模块。

如果您尝试在模块中包含PHP文件,那么您应该使用module_load_include(),而不是require_once(),正如marcvangend已经建议的那样。

答案 1 :(得分:0)

XAMPP服务器无法在Windows文件系统格式上运行。您必须将文件位置写为localhost/xyz/abc ..