2011-12-08 10 views
0

httpdocsディレクトリ以外のphpファイルにシンボリックリンクすると、Apache/phpは空のファイルを提供します。しかし、拡張子をhtmlに変更すると、ファイルはhtmlドキュメントとして適切に提供されます。これは、私はそれがパーミッションエラーではないが、PHPの設定(open_basedirがこれを引き起こしている可能性がありますか?httpdocs以外のPHPスクリプトにシンボリックリンクすると、Apacheが空のファイルを提供する

誰でもこの現象を引き起こす可能性があることを知っていますか?

EDIT:これについて不思議な人にとっては、PHPのopen_basedirの制限によって問題が発生していました。

+0

Webサーバーは、PHPファイルに対して実行権限を持っていますか? – jessica

+0

はい、サーバーが実際にページを提供しています。403 – Steven

+0

@jessica PHPはOSが動作しているのではなく、実行可能である必要はありません – Brian

答えて

1

PHPでエラー報告を有効にし、PHPエラーログを確認してください。致命的なスクリプトや設定のエラーが100%保証されています。

+0

事は全く同じスクリプトは/ httpdocsフォルダーから動作します。エラー報告がオンになっていて、ログに何も表示されません – Steven

+0

E_ALLレベルを使用していますか?また、PHPがログファイルに書き込めないボックスも見たことがあります。もう1つの可能性は、ロードされた設定が、期待していた設定ではないということです。 – Kenaniah

+0

はい、どのような設定オプションがこれを引き起こす可能性がありますか? httpdocsディレクトリの外でPHPスクリプトを実行できないようなPHP/Apache設定ファイルがありますか? – Steven

0

webroot/htdocsからPHPスクリプトのシンボリックリンクをテストしました。うまく働いた。

は、次のファイルにmyphpscript.phpで

/some/directory/myphpscript.php  (the script) 
/some/directory/htdocs/symlink.php (webroot) 

を作った私は、ハローワールドスクリプト(<?php echo 'Hello world'; ?>)を追加しました。シンボリックリンクがで立ったときにフォローコマンドを使用して、コマンドラインから作成された/いくつかの/ディレクトリ/ htdocsに/:

ln -s ../myphpscript.php symlink.php 

Apacheはシンボリックリンクがある

  • ファイルにアクセスすることができます実行していることを確認

    • ユーザーを作成します正しい。相対パスを使用する場合は、ウェブルートからの相対パスでなければなりません(例:../../path/to/script.php)。ファイルを開く(例:nano symlink.php)リンクをテストします。

    エラーメッセージについては、Apache error.logを確認してください。

  • +0

    リンクが正しく作成されています。ファイルがロードされていて、404を投げているわけではなく、同じリンクが同じ場所にあるHTMLファイルに対して機能します。 – Steven

    +0

    シンボリックリンクの名前は何ですか? something.php? something.html? – HNygard

    関連する問題