0

PHPサイトで動作するように開発環境をセットアップしています。すべてのソース コードを、wamp を実行している Windows 7 ボックスにコピーしました。

すべてのパスを更新して、開発ボックスの正しい場所を反映しようとしています。しかし、定義ステートメントのいくつかに問題があります。たとえば、次のコードがあります。

define ('DOCUMENT_ROOT', 'c:\wamp\www\myapplicationname\members\');
define ('DB_LOG', 'c:\wamp\www\myapplicationname\members\log\db');
define ('ERROR_LOG', 'c:\wamp\www\myapplicationname\members\log\errors');

サイト サイトを実行しようとすると、次のエラー メッセージが表示されます。

解析エラー: 構文エラー、39 行目の C:\wamp\www\myapplicationname\members\includes\init.php の予期しない T_STRING

行 39 は、上に挙げた 2 番目の define ステートメントです。2 行目の構文強調表示が機能していないため、問題があることがわかります。「define」ステートメントを認識しません。
最初の行を次のように変更すると:

 define ('DOCUMENT_ROOT', 'c:\wamp\www\myapplicationname\members\\');

その後、強調表示は再び機能しますが、もちろん、パスが間違っています。

私が欠けているものを教えてもらえますか?

編集1

私はそれを次のように変更しようとしました:

'define ('DOCUMENT_ROOT', 'c:\wamp\www\myapplicationname\members\'');

しかし、コードの後半で DOCUMENT_ROOT に追加するときに、

require_once DOCUMENT_ROOT.'\inc\exception.class.php';

次のエラーが表示されます。

警告: require_once(c:\wamp\www\myapplicationname\members'\inc\exception.class.php) [function.require-once]: ストリームを開けませんでした:

4

2 に答える 2

1

SO コードの強調表示は問題を明確に示しています:\はエスケープ文字であり、次の文字をエスケープしています。'文字列の末尾ではなく'、その文字列内の文字として解釈されます。次に、文字列が次の行にまたがりますが、これは許可されておらず、PHP はエラーをスローします。

文字列で使用する場合は、次の\ように入力する必要があります\\。最初のものは 2 番目のものをエスケープします。

define ('DOCUMENT_ROOT', 'c:\\wamp\\www\\myapplicationname\\members\\');
define ('DB_LOG', 'c:\\wamp\\www\\myapplicationname\\members\\log\\db');
define ('ERROR_LOG', 'c:\\wamp\\www\\myapplicationname\\members\\log\\errors');
于 2013-02-16T18:06:59.110 に答える
0

バックスラッシュは PHP の特殊文字であるため、すべてエスケープする必要があります。

define ('DOCUMENT_ROOT', 'c:\\wamp\\www\\myapplicationname\\members\\');
define ('DB_LOG', 'c:\\wamp\\www\\myapplicationname\\members\\log\\db');
define ('ERROR_LOG', 'c:\\wamp\www\\myapplicationname\\members\\log\\errors');
于 2013-02-16T18:04:13.540 に答える