簡體   English   中英

檢查是否允許glob()

[英]Check if glob() is allowed

我想在php腳本中使用glob() ,但是我收到了用戶的報告,它並不總是允許在服務器上使用。 一位用戶報告了以下錯誤:

Warning: glob() has been disabled for security reasons

如何檢測是否允許glob? 這是通過disable_functions完成的,還是有其他方法可以禁用glob? safe_mode也會禁用glob嗎? (php.net上的一位評論者這樣 )。

有沒有辦法可靠地檢查是否允許除了檢查safe_mode和disable_functions之外(如: 如何測試是否允許PHP system()函數的建議?並且出於安全原因沒有關閉

如果禁用了glob()函數,則返回NULL ,因此:

if (($res = glob('*')) === null) {
    //try something else
} else {
    // $res should be an array or false
}

順便說一句,這不會阻止警告出現; 你可以選擇沉默或完全忽略它。

只能使用disable_functions ini設置禁用AFAIK glob 使用function_exists()來檢測它是否可用:

if(function_exists('glob')) {
    glob('...');
}

您可以使用這個簡單的測試來嘗試:

you@server ~ $ php -ddisable_functions='glob' -r 'var_dump(function_exists("glob"));'
bool(false)

you@server ~ $ php -r 'var_dump(function_exists("glob"));'
bool(true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM