search
LoginSignup
11

More than 5 years have passed since last update.

posted at

updated at

CentOS7,Apache2でディレクトリへのデータ書き込みができない

CentOS7 + Apache2 で特定ディレクトリにデータを書き込もうとしてはまる

まとめ

SELinuxのせいです.
設定を変えるか無効にしてください.
(参考: http://www.hoge256.net/2014/10/1200.html

mod_security を導入している方はそちらの設定も念のため見直されると良いと思います.


背景

とあるCMSを導入する際,
ふと思い立って普段はXAMPPなどで手軽に環境構築しているところを,
yumでApacheなどをそれぞれ入れて設定してみようとしたところ,
ディレクトリへのデータの書き込みができずはまる.

現象

ディレクトリのパーミッションは777にも関わらず,
CMSのインストーラーが「書き込み権限が割り当てられていない」と怒る.

phpで以下のようなスクリプトを組んでみても書き込みはできない

sample.php
<?php
$fname = "dummy";
try{
    $fp = fopen( $fname, "w" );
} catch (ErrorException $e) {
    print($e);
}
if( $fp ){
echo __LINE__.": OK".PHP_EOL;
    fputs($fp, date("Ymd H:i:s"));
    fclose( $fp );
}
echo __LINE__.": OK".PHP_EOL;

以下のようなエラーが出てくる
Warning: fopen(dummy): failed to open stream: Permission denied in /var/www/html/sample.php on line 4

mod_security を入れていたのでこれが悪さをしているのかな?
と思って切ってみたりするが変化なし.

対策

こちらのサイト( http://www.hoge256.net/2014/10/1200.html )を参考に,
SELinuxの設定を見直す.

/var/www/html/tmp
に書き込みを許したいとして,
# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/tmp(/.*)?"
# restorecon -R /var/www/html/tmp
のような設定を行う.

もしくは単純にSELinuxを停止する.
# setenforce 0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
11