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