open basedir php檔案包含目錄配置

2022-04-02 10:13:23 字數 2738 閱讀 3426

open_basedir將php所能開啟的檔案限定在制定的目錄樹中,包括其檔案本身,當使用這些fopen,file_put_contents()開啟乙個檔案,這個檔案的檔案的位置會被檢查,如果檔案在其指定的目錄樹之外,程式將會被拒絕開啟。

錯誤如下:

通過檢視crontab定時命令(grep 'index.php' /var/log/cron)

un 14 21:14:01 bogon crond[4542]: (han) cmd (/home/wwwroot/index.php)

jun 14 21:14:01 bogon crond[4541]: (han) cmdout (/bin/sh: /home/wwwroot/index.php:許可權不夠)

jun 14 21:16:01 bogon crond[4659]: (han) cmd (/home/wwwroot/index.php)

jun 14 21:16:01 bogon crond[4658]: (han) cmdout (/bin/sh: /home/wwwroot/index.php:許可權不夠)

jun 14 21:18:01 bogon crond[4711]: (han) cmd (/home/wwwroot/index.php)

open_basedir限定的其實是字首而不是目錄,也就是說「open_basedir = /dir/incl」也會允許訪問「/dir/include」和「/dir/incls」,如果它們存在的話。

如果要將訪問限制在僅為指定的目錄,用斜線結束路徑名。例如:「open_basedir = /dir/incl/」。)

接下來總結下, 可以有幾種方式設定限制包含目錄

1)php.ini open_basedir = /home/wwwroot/

2)ini_set 注意:php >5.2.3+php_ini_all ,不建議使用,這麼設定太隨意了。

3)apache 的 httpd.conf 中directory配置

"php_admin_value open_basedir none" #

關閉 php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"httpd.conf中virtualhost

php_admin_value open_basedir "/home/wwwroot/:/tmp/:/var/tmp/:/proc/"

4)nginx fastcgi.conf

fastcgi_param php_value "open_basedir=$document_root:/tmp/";

5).user.ini 檔案

設定方法同 1 .

[root@bogon default]#

cat .user.ini

open_basedir=/home/wwwroot/default:/tmp/:/proc/

drwxrwxrwx.  3 han  www    138 6月  14 23:41 .

drwxrwxrwx.  3 han  root    38 6月  14 21:43 ..

-rwxrwxrwx.  1 han  root  2781 6月  11 21:27 index.html

-rwxrwxrwx.  1 han  root  5683 6月  11 21:27 lnmp.gif

-rwxrwxrwx.  1 han  root 20256 6月  11 21:27 ocp.php

-rwxrwxrwx.  1 han  root    20 6月  11 21:27 phpinfo.php

drwxrwxrwx. 14 han  www   4096 6月  11 21:27 phpmyadmin

-rwxrwxrwx.  1 han  root 42609 6月  11 21:27 p.php

-rw-rw-r--   1 han  han     67 6月  14 21:52 test.php

-rw-r--r--.  1 root root    48 6月  11 21:27 .user.ini

此時給檔案賦不上許可權的,chmod -r 777 是無效的

[root@bogon wwwroot]#

chmod -r 777 default/

chmod: 更改"default/.user.ini" 的許可權:不允許的操作

[root@bogon wwwroot]

#因為檔案被鎖定,所以要解除鎖定,在刪除

[root@bogon default]#

rm .user.ini

rm:是否刪除普通檔案 ".user.ini"?y

rm: 無法刪除".user.ini":不允許的操作

[root@bogon

default]#

chattr -i /home/wwwroot/default/.user.ini

open basedir php授權目錄設定

在file get contents或file put contents或其它函式需要讀取寫入檔案時,需要設定open basedir安全目錄 php為了安全性考慮,有一項 open basedir 的設定。根據你web伺服器環境,open basedir可以在幾個地方設定。首先 在php.ini中...

open basedir php授權目錄設定

在file get contents或file put contents或其它函式需要讀取寫入檔案時,需要設定open basedir安全目錄 php為了安全性考慮,有一項 open basedir 的設定。根據你web伺服器環境,open basedir可以在幾個地方設定。首先 在php.ini中...

open basedir php授權目錄設定

php為了安全性考慮,有一項 open basedir 的設定。根據你web伺服器環境,open basedir可以在幾個地方設定。首先 在php.ini中配置。open basedir 如果發現配置項前是有分號,表明php.ini中沒有該設定。那就很可能是在 php fpm 中的 fastcgi....