【问题标题】:How do I use require_once()?如何使用 require_once()?
【发布时间】:2012-05-02 20:44:49
【问题描述】:

我创建了一个包含以下内容的 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() 代码

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

【问题讨论】:

  • 首先,您缺少 php 语法。您必须用引号括起路径:require_once('./classes/MaterialUtil.class.php')。第二件事是您的代码不适用于 Drupal。也许您应该从有关 Drupal 模块开发的文章开始。
  • 我把MaterialUtil.class.php放在了D:\xampp\htdocs\drupal\sites\all\themes\zeropoint\classes 是吧?如果不正确,应该放在哪里?
  • 不幸的是,我看不到您在做什么以及您的示例中 Drupal 的使用在哪里。如果你不引导 Drupal,你只需要设置文件的完整路径 /sites/all/themes/zeropoint/classes/MaterialUtil.class.php
  • 我只是想知道如何在 Drupal 中使用 require_one。你能帮帮我吗?
  • @Paul 在主题中通常不需要包含类库。对我来说,听起来好像 user6919 正在尝试将功能构建到主题中,而他实际上应该是 creating a custom module 并使用 module_load_include() 来包含文件。

标签: php require-once


【解决方案1】:

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

正如 kalabro 所说,正确的代码如下:

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

这是答案中与 Drupal 不严格相关的部分。

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

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

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

【讨论】:

    【解决方案2】:

    XAMP 服务器不能在 windows 文件系统格式上运行。你必须写你的文件位置,比如localhost/xyz/abc ..

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 2019-06-06
      • 2011-03-24
      • 1970-01-01
      • 2013-04-26
      • 2012-06-27
      • 2012-10-24
      • 2012-03-21
      相关资源
      最近更新 更多