2016-09-22 10 views
0

私は簡単に私のdevのマシンと共有ホスト上で自分のページをテストできるようにするには、次のコードを使用しています:なぜinclude_path内のバックスラッシュがマングルされるのですか?

$include_path_afrihost = "../php/Services/facebook/php-graph-sdk-5.0.0/src/Facebook"; 
$include_path_dev = __DIR__."\sdk\facebook\php-graph-sdk-5.0.0\src\Facebook"; 
ini_set("include_path", $include_path_afrihost . PATH_SEPARATOR . $include_path_dev); 
require_once "Facebook.php"; 

私がしようとすると、コードを実行すると、私は次の例外を取得:

require_once():オープンに失敗しました 'Facebook.php' (include_path = '../php/Services/facebook/php-graph-sdk-5.0.0/src/Facebook; C:\ Dev \ PHP \プロジェクト\メッセンジャー\コード\ FacebookClient \ sdkacebook \ php-graph-sdk-5.0.0 \ src \ Facebook ')

"\ FacebookClient \ sdkacebook \"を含むdevのインクルードパスにはバックスラッシュと 'facebook'の 'f'がないことに注意してください。 Windowsファイルエクスプローラのアドレスバーからパスを直接コピーし、他のすべてのバックスラッシュは問題ありません。

私は1つの行を変更し、例えば、面白いバックスラッシュを二重にする場合:

$include_path_dev = __DIR__."\sdk\\facebook\php-graph-sdk-5.0.0\src\Facebook"; 

を、コードが正常に動作します。

+0

どのOSをお使いですか? –

+0

Windows 10. Duh、私stopidです。これはPHPのことではなく、Windowsのことです。 PHPはパスに渡します。 – ProfK

答えて

1

\fは、改行文字である\nと同様にエスケープ文字として読み込まれています。

バックスラッシュをエスケープすると、\\f\fになります。一般的に、この問題を避けるためにバックスラッシュをエスケープする必要があります。

+0

ありがとうございます。私は(noob)PHPでエスケープに使用されていないと思った。代わりに何がわかるでしょうか? – ProfK

関連する問題