2017 11,13 16:46 |
|
とあるプログラムの調査を依頼され、調べていたのですが、初めて知りました。
ファイルステータスを取得するのに、PHPがキャッシュを使っていること。
clearstatcache — ファイルのステータスのキャッシュをクリアする
http://php.net/clearstatcache
影響を受ける関数を以下に示します。
stat(), lstat(), file_exists(), is_writable(), is_readable(), is_executable(),
is_file(), is_dir(), is_link(), filectime(), fileatime(), filemtime(), fileinode(),
filegroup(), fileowner(), filesize(), filetype(), および fileperms().
これにより、filesize()とかコールしても、キャッシュファイルのサイズを戻すことがあり、
正しい処理ができない可能性も
負荷をかけ、ログファイルに沢山書き込むようにテストをしたとろこ、 ログファイルのサイズが、上限を設けているにも関わらず、 上限サイズを超えて、まちまちに。。。 filesize()が現在のファイルの情報を正しく取得していないという証拠なのでしょう。 PR |
|
2017 11,07 18:03 |
|
ls -ld /tmp/
drwxrwxrwt. 49 root root 12288 11月 7 17:47 /tmp/
なんだ、権限の「.」(ドット)は!?
ということで、調べてみました。
やはり、ほかの皆さん最初は驚いているみたいで
RHEL6系だとSELinux有効化で作られたファイル・フォルダには".(ドット)"が付くみたいです。
パーミッション末尾のドットはSELinuxで使われるセキュリティコンテキストが設定されている事を意味していて、
SELinuxを使わないなら気にする必要はないという説明も。
仮にSELinux=無効化しても、/tmpとかの標準フォルダとかには初めから付いてる。
また、SELinux=有効化で作成したファイル・フォルダにも付けられる。
ls コマンドの -Z オプションはSELinuxのセキュリティコンテキストを表示するオプションだそうです。
見方がよくわからないですが。
このセキュリティコンテキストという属性は、SELinux=無効化した後も残るみたいです。
ちなみに、この表示はRHEL6系からのようで、
5系ではこの".(ドット)"は、表示されているのを見たことがないです。
ついでに、「.」の前の「t」も残しておこう。
「t」は、スティッキービットと呼ばれるもので、
スティッキービット(Sticky Bit)が設定されたディレクトリでは、
すべてのユーザーがファイル・ディレクトリを書き込めるが、所有者だけ(rootは除く)しか削除できなくなります。
しかし、「すべてのユーザー」という認識していたのに、apacheユーザだと書き込まなかったのですが。
(apacheで、ログ的なファイルを一時/tmpに移動をさせた際に、ファイルが生成されなかった。)
なんか、よく分からんです。
|
|
2017 10,24 13:01 |
|
よくわからんけど、いきなり.bash_profileが消えました。
とりあえず、他の方も書いているけど一応 +++++++++++++++++++++++++
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME +++++++++++++++++++++++++ .bashrc も飛んでいたので。。。 # .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
参考:http://oxynotes.com/?p=5418 |
|
2017 10,05 15:15 |
|
LocalのXAMPPにPHP7を入れて、OpenSSLを有効にし、Apacheを再起動したら
「序数385 xxxx php_openssl.dllから見つけられませんでした」というエラーが。
なんじゃ、そりゃ。
調べてみると、PHP7ではOpenSSL1.0.2以降のバージョンが要求されると。
とりあえず、よくわからんが、DLLを新しくすればいいのだなと。
http://slproweb.com/products/Win32OpenSSL.html
より、Windows版の最新OpenSSLを取得。
DLLが欲しいだけなのにインストーラーをダウンロードさせられます。
で、インストールしたら ~\OpenSSL-Win32配下にある
libeay32.dllとssleay32.dllを、XAMPPのApacheのbinの下に入れます。
(同名の古いdllは、バックアップを取って)
で、apacheを再起動したら、エラーが出なくなった。
OpenSSL系の関数も動作をしました。
参考
https://qiita.com/rana_kualu/items/4bd4e0aa2d3470b1f9fa
|
|
2017 10,05 15:14 |
|
忍者ブログ [PR] |