我在VPS上使用託管功能,他們不允許我使用php的ini_set函數在運行時設置配置,腳本基於腳本。相反,我必須直接在php.ini文件中更改設置,這是通過SSH訪問的任務。爲什麼在共享主機上關閉php的ini_set函數
這是爲什麼?
這雖然很好,就是有點惱人,因爲我有共享服務器上的12個域,我不neccessarily要全線設的設置....
我在VPS上使用託管功能,他們不允許我使用php的ini_set函數在運行時設置配置,腳本基於腳本。相反,我必須直接在php.ini文件中更改設置,這是通過SSH訪問的任務。爲什麼在共享主機上關閉php的ini_set函數
這是爲什麼?
這雖然很好,就是有點惱人,因爲我有共享服務器上的12個域,我不neccessarily要全線設的設置....
VPS提供商有一種傾向,力他們的用戶儘可能使用最安全的環境。例如,禁用ini_set()
通常是一種很好的安全實踐,因爲您可以在PHP代碼中輕鬆使用以GET/POST/SESSION變量作爲輸入的eval()
語句。如果safe_mode
已打開,我相信ini_set()
默認被阻止。我會想象任何共享主機提供商將執行safe_mode
。
如果它是針對經銷商的產品,可能會阻止您的客戶/客戶/用戶隨意更改php.ini設置,這通常是明智的做法。
但是,如果您有機器的完全訪問權限,您是不是應該能夠重新激活ini_set
?
像Pekka說的,如果你可以通過SSH修改你的php.ini,然後嘗試在那裏改變它。
關閉safe_mode
併爲您的disable_functions
內容本指令允許你禁用某些功能,出於安全原因。它需要用逗號分隔的函數名稱列表。 disable_functions不受安全模式的影響。該指令必須在php.ini中設置。例如,您不能在httpd.conf中設置該指令。
您可以詳細瞭解服務器組件。 PHP作爲CGI或mod_php。 PHP是否啓用了suPHP或其他保護系統? 某些選項可以使用.htaccess文件進行更改。你有直接訪問httpd.conf文件嗎?在那裏你可以啓用ini_set() - >http://php.net/manual/en/configuration.changes.php
只需要明確:使用eval()AT ALL是不好的做法。永遠不要使用eval()的用戶輸入,如果你需要使用eval(),即使啓用了safe_mode。 – Matchu 2010-01-19 18:03:50