yuu_nkjm blog
2013-11-18(Mon) [長年日記] 編集
[Apache] Apacheで特定のシンボリックリンクがたどれない(SymLinksIfOwnerMatch)
ルートディレクトリから対象となるディレクトリまでのパーミッションも問題ないし,FollowSymLinksの設定もしているのに,特定のシンボリックリンクをたどってWebコンテンツが見えない場合は,SymLinksIfOwnerMatchを疑ってみる.
Optionsディレクティブ - core - Apache HTTP サーバによると,以下の様に書かている.SymLinksIfOwnerMatch
シンボリック先のファイルまたはディレクトリが、 シンボリックリンクの所有ユーザ ID と同じ場合にのみシンボリックリンクを たどれるようにします。
サーバの設定を確認してみると,以下の様に~/pulic_htmlにはSymLinksIfOwnerMatchが設定されていた.
[root@host /etc/apache2]$ grep -R "SymLinksIfOwnerMatch" . mod_userdir.conf: Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
/home/nkjm以下のコンテンツは全てnkjmが所有しているとすると,SymLinksIfOwnerMatchが設定されている場合,以下の1例目のdevは辿ることができて,以下の2例目のdevは辿ることができない.
[nkjm@host /home/nkjm/public_html]$ ls -la lrwxrwxrwx 1 nkjm users 50 11月 14 11:03 client -> /home/nkjm/client/ lrwxrwxrwx 1 root root 68 11月 19 23:00 dev -> /home/nkjm/dev ;; シンボリックリンクの所有ユーザIDとシンボリックリンク先の所有ユーザIDが同じでないからたどれない!
[nkjm@host /home/nkjm/public_html]$ ls -la lrwxrwxrwx 1 nkjm users 50 11月 14 11:03 client -> /home/nkjm/client/ lrwxrwxrwx 1 nkjm users 68 11月 19 23:11 dev -> /home/nkjm/dev ;; シンボリックリンクの所有ユーザIDとシンボリックリンク先の所有ユーザIDが同じなのでたどれる!
[ツッコミを入れる]
2013-11-19(Tue) [長年日記] 編集
[openSUSE][PHP][Troubleshooting] php.iniの初期設定
タイムゾーンの設定をしていないと後になってこけることがある.
;; date.timezone = 'UTC' date.timezone = 'Asia/Tokyo'
[ツッコミを入れる]
2013-11-22(Fri) [長年日記] 編集
[PHP][gdb] phpのプログラムに対してgdbを使う
phpで書いたプログラムが謎な落ち方をして,エラーログを見ても何も出てない!って時にgdbを使って見た.
PHPでのデバッグ方法 - Yahoo! JAPAN Tech Blogの通りやってみたらうまく行った.
[ツッコミを入れる]
2013-11-23(Sat) [長年日記] 編集
[Kawa][Scheme] グローバル定義の変数やローカル定義の変数をこねくりまわす
Schemeの練習.元々はset!じゃなくてdefineでやりたいんだった….
(define a "hoge")
(define b 'a)
(define set-in-func1! (lambda(x)
name: 'set-in-func1!
(display x) ;; a
(set! x "pyo") ;; x=>"pyo"
(display x) ;; pyo
))
(trace set-in-func1!)
(set-in-func1! b);; (set-in-func1! a)
a ;; hoge
b ;; a
(eval b) ;; b=>a=>"hoge"
(define x "hoge")
(define y 'x)
(define set-in-func2! (lambda(z)
name: 'set-in-func2!
(display z) ;; x
(eval `(set! ,z "pyo")) ;; (eval (set! x "pyo"))
(display z) ;; x
))
(trace set-in-func2!)
(set-in-func2! y) ;; y=>x ===> (set-in-func2! x)
x ;; "pyo"
y ;; x
(define m "hoge")
(define n "moge")
(define set-in-func3! (lambda(n)
name: 'set-in-func3!
(display n) ;; "hoge"
(eval `(set! n "pyo")) ;; (eval (set! n "pyo")) evalはレキシカルな環境の影響を受けない
;;(eval `(set! ,n "bar")) は,(eval (set! "foo" "bar"))となるのでエラー
(display n) ;; "hoge"
))
(trace set-in-func3!)
(set-in-func3! m) ;; n=>m=>"foo" ===> (set-in-func3! "foo")
m ;;hoge
n ;;pyo
(define x "global")
(define y 'x)
(define set-with-macro! (lambda ()
name: 'set-with-macro!
(define-macro (macroset! x msg)
(let ((t (eval x)))
`(set! ,t ,msg)))
(define x "local")
(define y 'x)
(define set-in-func4! (lambda(z)
name: 'set-in-func4!
(display x) ;; local
(macroset! y "change local var")
(display x) ;; change local var
))
(set-in-func4! y)
))
(trace set-with-macro!)
(set-with-macro!)
x ;; "global"
y ;; x
関連ページ
[ツッコミを入れる]