BugTrack/2427
の編集
Top
/
BugTrack
/
2427
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
* 生成ファイルのパーミッションを制御したい [#a3a2a2fd] - ページ: BugTrack - 投稿者: [[umorigu]] - 優先順位: 低 - 状態: 完了 - カテゴリー: 本体新機能 - 投稿日: 2017-09-07 (木) 07:22:12 - バージョン: 1.5.1 ** メッセージ [#o92f23b1] UNIX環境でPukiWikiが生成するファイルはパーミッション644に設定される。 OSレベルでWebサーバーの動作ユーザーとPukiWiki管理者ユーザーが異なる場合、PukiWikiが生成したファイルを管理者が編集できなくなる。 Webサーバーの動作ユーザーと管理者のグループが同一の場合、PukiWiki管理下のファイルをパーミッション664で生成すれば管理者がファイルを編集できる。 *** 調査・対策 [#he29ec3a] デフォルトパーミッションが644になるのはumaskが022のため。 umask(002); を実行すれば生成ファイルのパーミッションを664にできる。 [[php.net:manual/ja/function.umask.php]] - umask(002) -> ファイルパーミッション: 664 - umask(022) -> ファイルパーミッション: 644 - umask(006) -> ファイルパーミッション: 660 *** カスタマイズ方法 [#f46f395d] (シングルスレッド版PHPの場合のみ) pukiwiki.ini.php または lib/init.php で希望のパーミッションになるようにumask()を実行する。 umask(002); # -> 664 ※マルチスレッド版のPHPでumask()を実行することは避けてください。詳細は PHPマニュアル([[php.net:manual/ja/function.umask.php#refsect1-function.umask-notes]])を参照してください。 -------- - 調査の結果umaskの設定でうまく動作することがわかりました。Resolveします。pkwk_touch(lib/file.php) で chmod(664); する実装も試しましたが、カバー範囲が狭く、希望通りの動作になりませんでした。(pkwk_touchでのchmodが有効になるファイルはごく一部だった) -- [[umorigu]] &new{2017-09-08 (金) 05:21:57}; - このカスタマイズについては、上記URL(PHPのマニュアル)にある「ファイルを生成後、chmod() を使用してファイル権限を 変更するのがより良い方法」「(umask()は)予期しない動作を引き起こす原因になる可能性があります」の通りだと思います。ファイル処理部分が十分に集約されているならば。 -- [[henoheno]] &new{2017-09-12 (火) 00:02:51}; -- ご指摘の通り、その注釈は必要ですね。この文は直前の「マルチスレッドな Web サーバーでこの関数を使用することは避けてください。 」を受けていて、シングルスレッド設定のPHPが動作している場合は問題ないのだと思っています。ここ(OSDNのプロジェクトWeb)は Thread safety: disabled となっていて、シングルスレッド動作をしているようでした -- [[umorigu]] &new{2017-09-12 (火) 00:46:57}; #comment
タイムスタンプを変更しない
* 生成ファイルのパーミッションを制御したい [#a3a2a2fd] - ページ: BugTrack - 投稿者: [[umorigu]] - 優先順位: 低 - 状態: 完了 - カテゴリー: 本体新機能 - 投稿日: 2017-09-07 (木) 07:22:12 - バージョン: 1.5.1 ** メッセージ [#o92f23b1] UNIX環境でPukiWikiが生成するファイルはパーミッション644に設定される。 OSレベルでWebサーバーの動作ユーザーとPukiWiki管理者ユーザーが異なる場合、PukiWikiが生成したファイルを管理者が編集できなくなる。 Webサーバーの動作ユーザーと管理者のグループが同一の場合、PukiWiki管理下のファイルをパーミッション664で生成すれば管理者がファイルを編集できる。 *** 調査・対策 [#he29ec3a] デフォルトパーミッションが644になるのはumaskが022のため。 umask(002); を実行すれば生成ファイルのパーミッションを664にできる。 [[php.net:manual/ja/function.umask.php]] - umask(002) -> ファイルパーミッション: 664 - umask(022) -> ファイルパーミッション: 644 - umask(006) -> ファイルパーミッション: 660 *** カスタマイズ方法 [#f46f395d] (シングルスレッド版PHPの場合のみ) pukiwiki.ini.php または lib/init.php で希望のパーミッションになるようにumask()を実行する。 umask(002); # -> 664 ※マルチスレッド版のPHPでumask()を実行することは避けてください。詳細は PHPマニュアル([[php.net:manual/ja/function.umask.php#refsect1-function.umask-notes]])を参照してください。 -------- - 調査の結果umaskの設定でうまく動作することがわかりました。Resolveします。pkwk_touch(lib/file.php) で chmod(664); する実装も試しましたが、カバー範囲が狭く、希望通りの動作になりませんでした。(pkwk_touchでのchmodが有効になるファイルはごく一部だった) -- [[umorigu]] &new{2017-09-08 (金) 05:21:57}; - このカスタマイズについては、上記URL(PHPのマニュアル)にある「ファイルを生成後、chmod() を使用してファイル権限を 変更するのがより良い方法」「(umask()は)予期しない動作を引き起こす原因になる可能性があります」の通りだと思います。ファイル処理部分が十分に集約されているならば。 -- [[henoheno]] &new{2017-09-12 (火) 00:02:51}; -- ご指摘の通り、その注釈は必要ですね。この文は直前の「マルチスレッドな Web サーバーでこの関数を使用することは避けてください。 」を受けていて、シングルスレッド設定のPHPが動作している場合は問題ないのだと思っています。ここ(OSDNのプロジェクトWeb)は Thread safety: disabled となっていて、シングルスレッド動作をしているようでした -- [[umorigu]] &new{2017-09-12 (火) 00:46:57}; #comment
テキスト整形のルールを表示する