[解決済み] PHPで適切なパーミッションが与えられているにもかかわらず、パーミッションが拒否される
質問
PHPでファイルを読み込もうとしているのですが、誰もがそのファイルに読み取りアクセスできるにもかかわらず、permission deniedエラーが発生します。
PHPのコードです。
$config=file_get_contents('/opt/jenkins/home/config.xml');
エラーです。
Warning: file_get_contents(/opt/jenkins/home/config.xml): failed to open stream: Permission denied in [...]
ファイルシステムのパーミッションです。
を指すシンボリックリンクがあります。
/opt/jenkins/home/
から
/var/lib/jenkins
で、全員がシンボリックリンク、実際のフォルダ、およびファイルに対する読み取り権限を持っています。
$ ls -lh /opt/jenkins/
lrwxrwxrwx 1 sysadmin sysadmin 16 2011-08-04 08:12 home -> /var/lib/jenkins
$ ls -lh /var/lib/ | grep jenkins
drwxr-xr-- 6 jenkins adm 4.0K 2011-08-04 10:04 jenkins
$ ls -lh /var/lib/jenkins/config.xml
-rwxr-xr-- 1 jenkins adm 3.9K 2011-08-04 10:05 /var/lib/jenkins/config.xml
Apacheの設定
シンボリックリンクに従うように設定されている (
Options All
). を追加することで
Directory
ディレクティブを
/var/lib/jenkins/
を使っても違いはありません。
<Directory /opt/jenkins/home/>
Options All
AllowOverride All
Order Allow,Deny
Allow from All
</Directory>
追加情報
シンボリックリンクによるパスを使用するかどうか (
"/opt/jenkins/home/config.xml"
) か、実際のパス (
"/var/lib/jenkins/config.xml"
) 同じ問題が発生します。
apache2 version=2.2.14-5ubuntu8.4
php version=5.3.2-1ubuntu4.9
なぜこのようなエラーが発生するのか、何か心当たりはありますか?
解決方法を教えてください。
あなたのディレクトリには
execute
のパーミッションが必要です。ワールドエグゼクティブはないようです。
jenkins
はおそらくapacheユーザではなく、apacheユーザが
adm
グループに所属している場合は、うまくいかないでしょう。
$ ls -lh /var/lib/ | grep jenkins
drwxr-xr-- 6 jenkins adm 4.0K 2011-08-04 10:04 jenkins
例によって。
netcoder@netcoder:~$ mkdir foo
netcoder@netcoder:~$ echo hello > foo/bar
netcoder@netcoder:~$ chmod 777 foo/bar
netcoder@netcoder:~$ ls -lsah foo/bar
4.0K -rwxrwxrwx 1 netcoder netcoder 6 2011-08-04 08:22 foo/bar
netcoder@netcoder:~$ chmod 444 foo/
netcoder@netcoder:~$ ls -lsah | grep foo
4.0K dr--r--r-- 2 netcoder netcoder 4.0K 2011-08-04 08:22 foo
netcoder@netcoder:~$ cat foo/bar
cat: foo/bar: Permission denied
にもかかわらず
foo/bar
は
0777
実行権限がない場合、そのディレクトリの内容の読み取りは拒否されます。
ターゲットディレクトリとシンボリックリンクの両方にパーミッションが設定されている必要があります。
関連
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】「Fatal error: Class 'MySQLi' not found "を解決するには?
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: パラメータが定義されていません
-
[解決済み】PDOException SQLSTATE[HY000] [2002] そのようなファイルまたはディレクトリがありません。
-
phpのAllowed memory size of 134217728 bytes枯渇問題の解決法
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。
-
[解決済み] "お知らせ 未定義変数"、"Notice: Notice: 未定義のインデックス", "Notice:未定義のインデックス", "Notice."。PHPを使用した「未定義のオフセット
-
[解決済み】npmインストール時。Unhandled rejection Error: EACCES: パーミッションが拒否されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given [重複] PHP & MySQL: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given.
-
[解決済み】++と*+の意味は何ですか?
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】count()パラメータは配列かlaravelのcountableを実装したオブジェクトでなければならない
-
[解決済み】警告: file_get_contents(): https:// ラッパーがサーバー構成ですべて無効になっています。
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。