質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • PHP

    20371questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2314questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

cakephpの移行でエラー発生

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 353

progman

score 42

以前CAKEPHPで開発したシステムを違うサーバに移行しとうとしているのですが、つまづいています。

以下のログのようにがファイルのアクセスエラー(〜 is not writable〜)が出ていますが、その下のlsの結果のように
アクセスできる状態となっていて、エラーとはならないはずではないでしょうか、
最初のほうにでている「_cake_core_ cache was unable to write 'cake_dev_ja' to File」も/tmp/cake配下のアクセス権では
ないかとおもいますが、前述のとおり問題ないとおもいます。

私が開発し、サーバも私が構築したのですが、PHP、CakePHPはこのシステムを構築してからは、ほとんど使っていません。
どこか、追加で確認したりする点はあるでしょうか?
アドバイスいただければとおもいます。

サーバはCentOS7で開発環境(XAMPP)5.6には移行できて、動作しています。

1./var/log/httpd/error_logの内容
[Fri Dec 22 21:55:22.201386 2017] [mpm_prefork:notice] [pid 25221] AH00170: caught SIGWINCH, shutting down gracefully
[Fri Dec 22 21:55:23.284201 2017] [core:notice] [pid 28576] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Fri Dec 22 21:55:23.284965 2017] [suexec:notice] [pid 28576] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
[Fri Dec 22 21:55:23.307759 2017] [auth_digest:notice] [pid 28576] AH01757: generating secret for digest authentication ...
[Fri Dec 22 21:55:23.308913 2017] [lbmethod_heartbeat:notice] [pid 28576] AH02282: No slotmem from mod_heartmonitor
[Fri Dec 22 21:55:23.323517 2017] [mpm_prefork:notice] [pid 28576] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations
[Fri Dec 22 21:55:23.323556 2017] [core:notice] [pid 28576] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Fri Dec 22 21:55:32.814182 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
[Fri Dec 22 21:55:32.814235 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
[Fri Dec 22 21:55:32.814244 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  /tmp/cake/cache/persistent/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
[Fri Dec 22 21:55:32.814333 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  /tmp/cake/cache/models/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
[Fri Dec 22 21:55:32.814582 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  /opt/htdocs/cake/app/tmp/cache/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
[Fri Dec 22 21:55:32.837404 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
[Fri Dec 22 21:55:32.839196 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
[Fri Dec 22 21:55:32.850936 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
[Fri Dec 22 21:55:32.851844 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
[Fri Dec 22 21:55:32.852065 2017] [:error] [pid 28579] [client 192.168.0.2:62833] PHP Warning:  file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69

2.デイレクトリ状態
[root@localhost httpd]# ls -ld /tmp/cake/cache/persistent/ /tmp/cake/cache/models/ /opt/htdocs/cake/app/tmp/cache/ /tmp/cake/log/
drwxrwxrwx. 5 apache apache 51 12月 20 06:08 /opt/htdocs/cake/app/tmp/cache/
drwxrwxrwx. 2 apache apache  6 12月 22 07:55 /tmp/cake/cache/models/
drwxrwxrwx. 2 apache apache  6 12月 22 07:53 /tmp/cake/cache/persistent/
drwxrwxrwx. 2 apache apache  6 12月 22 07:50 /tmp/cake/log/

3。各バージョン
[root@localhost httpd]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Oct 19 2017 20:39:16
[root@localhost httpd]# php -v
PHP 5.4.16 (cli) (built: Nov 15 2017 16:33:54) 
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
[root@localhost httpd]# tail -3 /opt/htdocs/cake/lib/Cake/VERSION.txt
// +--------------------------------------------------------------------------------------------+ //
////////////////////////////////////////////////////////////////////////////////////////////////////
2.0.3

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2017/12/22 22:38

    /tmp/cake/cache, /tmp/cake, /tmp のパーミッションは? 封鎖区域なきがするな

    キャンセル

回答 1

checkベストアンサー

+1

SELinuxが動いている状態なので、どうするか決めなければいけません。

[Fri Dec 22 21:55:23.284201 2017] [core:notice] [pid 28576] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0

SELinuxを無効にする場合は、下記のようにSELINUX=disabledにしてからサーバーを再起動します。

sudo vi /etc/selinux/config

SELinuxを使う場合はポリシーを作成しなくてはなりません。まずは、現在のSELinuxのモードをgetenforceコマンドで取得します。
Enforcing以外の場合は、一時的に下記に切り替えて作業を行います。PermissiveモードではSELinuxポリシー違反をログに出力してくれます。

setenforce Permissive

Auditが起動していない場合はうまくログに書き出してくれません。その場合はAuditを自動起動に設定してから/etc/selinux/configSELINUX=permissiveに変更して再起動します。再起動する前に下記のようにすれば自動的にラベルの再構築を行ってくれます。

sudo systemctl enable auditd.service
sudo touch /.autorelabel
sudo reboot

必要なルールは下記audit2allowコマンドで表示されます。多分httpd, mysqldなどが必要になるかと思います。

#audit2allowインストール
sudo yum -y install policycoreutils-python

#とりあえず、ぜんぶ確認してみる(見やすい形に成形)
sudo audit2allow -w -a 

#すべてのモジュールを確認
sudo audit2allow -a -m

#モジュールごとに確認
sudo audit2allow -a -m httpd
sodo audit2allow -a -m mysqld

必要なルールが表示されますので、local.teというファイルにコピペしていきます。下記の例の先頭のようにmodule local 1.0とすれば、SELinuxにlocalモジュールを追加するという意味になります。

下記は私のCentOS6開発環境での例です。
HTTPS利用、MySQLソケットファイルを/tmpに、PHPのDBアクセス、Dovecotを考慮してあります。

module local 1.0;

# Apache:
# Allow access ssl cert files
require {
    type user_devpts_t;
    type httpd_sys_script_t;
    class capability { dac_override };
    class chr_file { read write };
}

#============= httpd_sys_script_t ==============
allow httpd_sys_script_t self:capability { dac_override };
allow httpd_sys_script_t user_devpts_t:chr_file { read write };


# MySQL:
# Allow create socket file at /tmp
require {
        type tmp_t;
        type mysqld_t;
        class sock_file create;
}

#============= mysqld_t ==============
allow mysqld_t tmp_t:sock_file create;


# PHP: 
# Allow socket connection to DB from PHP
require {
    type init_t;
    class unix_stream_socket connectto;
}

#============= httpd_t ==============
allow httpd_t init_t:unix_stream_socket connectto;

# Dovecot:
# Allow read /var/spool/vmail/* directory from postfix
require {
        type postfix_virtual_t;
        type dovecot_spool_t;
        class dir create;
}

#============= postfix_virtual_t ==============
allow postfix_virtual_t dovecot_spool_t:dir create;

上記ファイルができたら、下記でモジュールをmakeしてからinstallします。

cd local.teを作成したディレクトリ
sudo checkmodule -m -M -o local.mod local.te
sudo semodule_package --outfile local.pp --module local.mod

#インストール
sudo semodule --install=local.pp

#確認
sudo semodule -l | grep local

コンパイルされた状態のルールモジュールを作成したい場合は、下記のようにできます。

sudo audit2allow -a -M モジュール名
sudo semodule --install=モジュール名.pp
sudo semodule -l | grep モジュール名

ルールモジュールを削除したい場合は下記のようにします。

sudo semodule -r モジュール名

最後にPHPアプリケーションがうまく動いていることを確認(必要なDBアクセスやメールなども確認しましょう)して、SELinuxのモードをEnforcingに戻して完了です。

sudo setenforce Enforcing

/etc/selinux/configファイルを変更している場合は、SELINUX=enforcingにしてからサーバーを再起動します。

sudo vi /etc/selinux/config

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/23 22:13

    レスありがとうございます。

    無効にする方法で試しているのですが、うまくいきません。

    /tmp,/tmp/cakeのパーミッションも以下で、問題ないとおもいます。

    パーミッション
    [root@localhost httpd]# ls -ld /tmp
    drwxrwxrwt. 10 root root 4096 12月 23 22:00 /tmp
    [root@localhost httpd]# ls -ld /tmp/cake
    drwxrwxrwx. 5 apache apache 44 12月 22 07:55 /tmp/cake

    selinuxを無効にてのテスト結果
    [root@localhost httpd]# getenforce
    Disabled
    [root@localhost httpd]# pwd
    /var/log/httpd
    [root@localhost httpd]# tail error_log
    [Sat Dec 23 22:00:56.255433 2017] [core:notice] [pid 1146] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
    [Sat Dec 23 22:01:11.171479 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
    [Sat Dec 23 22:01:11.171534 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
    [Sat Dec 23 22:01:11.171542 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: /tmp/cake/cache/persistent/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
    [Sat Dec 23 22:01:11.171620 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: /tmp/cake/cache/models/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
    [Sat Dec 23 22:01:11.221570 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
    [Sat Dec 23 22:01:11.225432 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
    [Sat Dec 23 22:01:11.249090 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
    [Sat Dec 23 22:01:11.250368 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69
    [Sat Dec 23 22:01:11.250599 2017] [:error] [pid 1147] [client 192.168.0.2:56877] PHP Warning: file_put_contents(/tmp/cake/log/error.log) [<a href='http://php.net/function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /opt/htdocs/cake/lib/Cake/Log/Engine/FileLog.php on line 69

    試しに
    [root@localhost httpd]# ls -l /tmp/cake/log/error.log
    -rwxrwxrwx 1 apache apache 1 12月 23 22:10 /tmp/cake/log/error.log

    を作成しても結果は同じでした。

    キャンセル

  • 2017/12/23 22:24

    SELinuxを無効にした後は再起動しましたでしょうか? 再起動しない方法もありますが、再起動が一番簡単です。 実際にSELinuxラベルが張られているかを確認するには、下記コマンドを使います(ls -alZ のようにしても問題ありません)。
    ----
    ls -Z /tmp/cake

    キャンセル

  • 2017/12/24 13:54

    レスありがとうございます。

    再起動はしています。
    修正ミスで立ち上がらなくなって、難儀しました。

    ls -Z の結果は以下のとおりで、末尾でSELinuxを無効にしてから作成したデイレクトリの内容も出していますが、明らかに異なるので、有効時に作成した何かが残っているのでしょうね
    ls -Zの詳しい意味や、その内容からわかるアクセスへの作用を調べたのですが、見つからないので、とりあえず再作成してみました。

    drwxrwxrwx. apache apache unconfined_u:object_r:user_tmp_t:s0 models

    /tmp/cake/cache:
    drwxrwxrwx. apache apache unconfined_u:object_r:user_tmp_t:s0 models
    drwxrwxrwx. apache apache unconfined_u:object_r:user_tmp_t:s0 persistent

    /tmp/cake/cache/models:

    /tmp/cake/cache/persistent:

    /tmp/cake/log:
    -rwxrwxrwx apache apache ? error.log

    /tmp/cake/models:
    [root@localhost etc]# ls -Zd /tmp
    drwxrwxrwt. root root system_u:object_r:tmp_t:s0 /tmp
    [root@localhost etc]# mkdir /tmp/test
    [root@localhost etc]# ls -Zd /tmp/test
    drwxr-xr-x root root ? /tmp/test


    エラーは減ったのですが、やはりアクセスできない状況です。
    今エラーが出ている2つのデイレクトリは今回作成したものです。

    [Sun Dec 24 09:29:13.182183 2017] [mpm_prefork:notice] [pid 6143] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations
    [Sun Dec 24 09:29:13.182230 2017] [core:notice] [pid 6143] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
    [Sun Dec 24 09:30:10.284299 2017] [:error] [pid 6145] [client 192.168.0.2:52563] PHP Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
    [Sun Dec 24 09:30:10.284349 2017] [:error] [pid 6145] [client 192.168.0.2:52563] PHP Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
    [Sun Dec 24 09:30:10.284358 2017] [:error] [pid 6145] [client 192.168.0.2:52563] PHP Warning: /tmp/cake/cache/persistent/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
    [Sun Dec 24 09:30:10.284432 2017] [:error] [pid 6145] [client 192.168.0.2:52563] PHP Warning: /tmp/cake/cache/models/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316

    最新のデイレクトリ状態
    [root@localhost cake]# ls -lZR /tmp/cake
    /tmp/cake:
    drwxrwxrwx apache apache ? cache
    drwxrwxrwx apache apache ? log
    drwxrwxrwx apache apache ? models

    /tmp/cake/cache:
    drwxrwxrwx apache apache ? models
    drwxrwxrwx apache apache ? persistent

    /tmp/cake/cache/models:

    /tmp/cake/cache/persistent:

    /tmp/cake/log:

    /tmp/cake/models:

    キャンセル

  • 2017/12/24 15:19

    Apache の suEXEC を止めてみてはいかがでしょうか? 意味を分かって有効にしているのなら良いのですが、できるだけ関係ないApacheのモジュールは有効にしておかないほうが良いと思います。

    キャンセル

  • 2017/12/24 17:18

    レスありがとうございます。
    無効にしましたが、現象変わらずですね

    [Sun Dec 24 17:17:01.814749 2017] [so:warn] [pid 1543] AH01574: module rewrite_module is already loaded, skipping
    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
    [Sun Dec 24 17:17:01.830866 2017] [auth_digest:notice] [pid 1543] AH01757: generating secret for digest authentication ...
    [Sun Dec 24 17:17:01.831349 2017] [lbmethod_heartbeat:notice] [pid 1543] AH02282: No slotmem from mod_heartmonitor
    [Sun Dec 24 17:17:01.845610 2017] [mpm_prefork:notice] [pid 1543] AH00163: Apache/2.4.6 (CentOS) PHP/5.4.16 configured -- resuming normal operations
    [Sun Dec 24 17:17:01.845649 2017] [core:notice] [pid 1543] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
    [Sun Dec 24 17:17:12.996606 2017] [:error] [pid 1549] [client 192.168.0.2:53536] PHP Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
    [Sun Dec 24 17:17:12.996651 2017] [:error] [pid 1549] [client 192.168.0.2:53536] PHP Warning: _cake_core_ cache was unable to write 'cake_dev_ja' to File cache in /opt/htdocs/cake/lib/Cake/Cache/Cache.php on line 310
    [Sun Dec 24 17:17:12.996659 2017] [:error] [pid 1549] [client 192.168.0.2:53536] PHP Warning: /tmp/cake/cache/persistent/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316
    [Sun Dec 24 17:17:12.996725 2017] [:error] [pid 1549] [client 192.168.0.2:53536] PHP Warning: /tmp/cake/cache/models/ is not writable in /opt/htdocs/cake/lib/Cake/Cache/Engine/FileEngine.php on line 316

    キャンセル

  • 2017/12/24 18:02

    > [Sun Dec 24 17:17:01.831349 2017] [lbmethod_heartbeat:notice] [pid 1543] AH02282: No slotmem from mod_heartmonitor

    mod_heartmonitorこれは、必要なApacheモジュールでしょうか? 負荷分散用のモジュールですが、リバースプロキシとか設定していますか? 必要なければ切りましょう。 リバースプロキシを設定している場合は設定をきちんと見直してみたほうが良いです。

    まずは、コマンドラインから書き込み権限を確認してみるのが良いかと思います。
    ----
    echo "test text" > /tmp/cake/test.txt
    echo "test text" | sudo -u apache tee /tmp/cake/test1.txt
    ls -lZ /tmp/cake/test.txt /tmp/cake/test1.txt
    cat /tmp/cake/test.txt /tmp/cake/test1.txt

    現状は、オーナー権限、パーミッション、SELinuの問題は解決できているはずなので、CakePHPが原因なのか、ApacheやPHPの設定が原因なのかを探ってみるのが良いと思います。
    下記のようなファイルをドキュメントルートに置いてみて、確認してみてはいかがでしょうか?
    ----
    ■test2.php
    <?php file_put_contents('/tmp/cake/test2.txt', 'test text') ? echo file_get_contents('/tmp/cake/test2.txt') : echo 'FAILED'; ?>

    ■test3.php
    <?php passthru('echo "test text" > /tmp/cake/test3.txt', $ret); echo $ret."<br>\n"; echo file_get_contents('/tmp/cake/test2.txt'); ?>

    セーフモード、メモリーリミットなどのPHP設定も確認
    ----
    ■info.php
    <?php phpinfo(); ?>

    あとは、関連ディレクトリがリモートマシンからマウントされている場所であれば、マウント設定も見直してみるのが良いかと思います。いちおう他のサーバーログも確認しておくと良いかと思います。

    キャンセル

  • 2017/12/25 22:36

    レスありがとうございます。

    原因がわかりました。
    https://qiita.com/k1LoW/items/50017db5e66f87051afd
    などに書かれていますが、Private tmp という機能があって、
    /tmp下にアクセスしているつもりが、実際には
    /tmp/systemd-private-XXX-httpd.service-XXXXX/tmp
    にアクセスしているというものです。

    この長いディレクトリ名の下に/tmp/cake下のディレクトリをコピー
    して、正常動作を確認しました。

    実際の運用はどうするか、一考が必要ですが原因がわかったので、
    対応を考えればよいです。

    何度もレスありがとうございました。

    キャンセル

  • 2017/12/25 23:11

    なるほど勉強になりました。原因がわかってよかったです。レスが役に立ってなくてすみません。

    キャンセル

  • 2017/12/26 07:00

    今回は大きくいうと、SELinux、Private Tmpの2つの原因があって、
    SELinuxはTomakさんのアドバイスで解決したものです。
    これによりエラーが一気に減りました。

    lamppの環境でリリースしようかと、あきらめかけていたのですが、
    解決に近づいていると感じましたし、
    また、レスいただいたので、なんとか調査を続けようとおもいました。
    大変、感謝しています。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    20371questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • CakePHP

    2314questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。