1

次の内容の 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 に配置しましたが、次のエラー メッセージが表示されます。

解析エラー: 構文エラー、予期しない '.' in D:\xampp\htdocs\drupal\modules\php\php.module(80) : 7 行目の eval()'d コード

私が間違っていることを教えてください。

4

2 に答える 2

2

このエラーは、ファイル名に文字列を使用しなかったために発生し、PHP はドットを連結演算子として認識しました。そのため、演算子の前に値がなかったため、連結演算子が間違った場所にあるというエラーが PHP から返されました。

kalabro が言ったように、正しいコードは次のとおりです。

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

これは、Drupal に厳密には関係のない回答の一部です。

あなたがしていることは、次の 2 つの理由から、私が提案することではありません。

  • 「classes」ディレクトリを間違った場所に置いています。これらのファイルは、有効になっているテーマに関連していませんが、表示されているページに関連しています。テーマが 1 つしかなく、ユーザーが自分でテーマを選択することを許可されていない場合でも、それらのファイルをテーマ ディレクトリに配置するのは間違っています。
    注意しないと、新しいバージョンが利用可能になったときに更新する必要があるテーマを含むディレクトリにファイルを配置すると、追加した追加ファイルが失われる可能性があります。
  • たとえば、ノードに表示するコンテンツを取得するためにPHP を実行するeval()ことは、すべきことではありません。それの訳は:
    • ノードに PHP フィルターを使用したため、ノードは制限されたユーザー グループに対してのみ編集可能になります。(信頼できないユーザーが PHP を入力形式として使用できるようにすることはお勧めしません)
    • 実行する必要がある PHP コードがある場合は、サイトで有効なカスタム モジュールを作成することをお勧めします。

モジュール内から PHP ファイルをインクルードしようとしていた場合は、既に marcvangend によって提案されているように、 の代わりにmodule_load_include()require_once()を使用する必要があります。

于 2012-04-21T14:09:28.080 に答える