PHP INI位置的Joomla托管
配置文件
PHP启动时的配置文件(php.ini中)被读取。对于PHP的服务器模块的版本,这种情况只有在Web服务器再次起动。对于CGI和CLI版本,它发生在每次调用。
php.ini的搜索在这些位置(按顺序):- SAPI模块特定位置(Apache 2中PHPIniDir指令,在CGI和CLI -c命令行选项,在NSAPI php_ini参数,在THTTPD PHP_INI_PATH环境变量)
- PHPRC环境变量。 PHP 5.2.0之前,这是下文提到的注册表键后检查。
- 由于PHP 5.2.0中,php.ini文件的位置,可以为不同版本的PHP中进行设置。以下注册表项,以便检查:[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ X.Y.Z]。 [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ x.y格式]和[HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP \ X]。其中X,Y和Z指的是PHP的主要,次要和发布版本。如果在这些键为IniFilePath值,找到了第一个将被用作php.ini文件的位置(仅适用于Windows)。
- [HKEY_LOCAL_MACHINE \ SOFTWARE \ PHP]。 IniFilePath(仅限于Windows)的价值。
- 当前工作目录(对于CLI)。
- Web服务器的目录(对于SAPI模块)或PHP目录(Windows下其它情况)。
- Windows目录下(C:\ Windows或C:\ WINNT)(适用于Windows),或--with-配置文件路径编译时选项。
如果PHP-SAPI.ini存在(其中,SAPI是在使用中的SAPI,所以,例如,PHP-cli.ini或PHP-apache.ini等),它是用来替代php.ini。可以与php_sapi_name来确定SAPI名称()。
Apache Web服务器改变在启动目录的根,导致PHP尝试,如果它的存在是为了从根目录下读取php.ini。
使用环境变量可以在php.ini中使用,如下所示。
实施例#1的php.ini环境变量
由扩展库处理的php.ini指令,记录了扩展自己在各页上。核心指令列表在附录中提供。不是所有的PHP指令都一定记录本手册中:在自己的PHP版本指令的完整列表,请参阅您的很好的注释php.ini文件。或者,你可能会发现“从Git的最新的php.ini也有帮助。
实施例#2的php.ini示例
自PHP 5.1.0起,有可能在.ini文件内引用已存在的.ini变量。例如:的open_basedir = $ “:/新/目录”。
扫描目录
它可以配置PHP阅读php.ini文件后,扫描目录中的.ini文件。这可以在编译时通过设置--with-配置文件扫描-dir选项来完成。在PHP 5.2.0及以后,扫描目录随后可以在运行时通过设置PHP_INI_SCAN_DIR环境变量覆盖。
它可以通过它们与特定于平台的路径分隔符分隔扫描多个目录(;在Windows,NetWare和RISC OS;:在所有其他平台,可作为PATH_SEPARATOR恒定值PHP使用)。如果一个空白目录在PHP_INI_SCAN_DIR给出。 PHP也将扫描通过--with-配置文件 - 扫描 - 迪尔在编译时给出的目录。
在每个目录下,PHP会扫描按字母顺序排列的.ini结尾的文件。装载的是,以什么顺序文件的列表,可致电php_ini_scanned_files()。或通过运行PHP与--ini选项。
在php.ini您可以参考现有的指令或使用语法$的环境变量。
这里有些例子。
--- $将$ _ENV [“WINDIR”]在运行时替换
--- 您可以通过Apache的设置环境变量,并在php.ini中使用它们
--- FcgidInitialEnv作者 “WUXIANCHENG”
--- error_log中= “$ .LOG”
--- $将sys_temp_dir的值来代替
您也可以在php.ini中使用PHP的常量,但DONT'T包起来$<> 要么 ””。
--- 它的工作原理是这样的PHP代码:
$的error_log = “/数据/”。 PHP_VERSION。 “/”;
另外一个不错的功能是使用PHP的contants的能力:
例如:
的extension_dir = “” PHP_MAJOR_VERSION “ ”PHP_MINOR_VERSION“/ EXT”
该解决方案适用于我,当我需要强制的Windows Server 2012 R2上的PHP两个diferent版本 IIS:
对于一个应用中,地图* PHP扩展到CgiModule添加 “-c” 选项的可执行路径,这样的: “C:\ php53 \ PHP-cgi.exe文件-c C:\ php53 \ php.ini中”
对于其它应用,地图* PHP扩展到CgiModule添加 “-c” 选项的可执行路径,这样的: “C:\ php54 \ PHP-cgi.exe文件-c C:\ php54 \ php.ini中”
我认为这种方式是最干净的,因为没有必要与PATH变量或注册表或Windows目录下工作。
注:出于某种原因,这并没有FastCGI的模块上工作,涉及到的是IIS设置的可执行文件选项卡中不允许命令行选项的方式。
如果您有PHP的多个安装,并且“PHP --ini”不断加载相同的配置文件为每个版本的安装路径上的配置文件,而不是,它可能是值得检查Windows注册表。
我发现“HEKY_LOCAL_MACHINE \ SOFTEARE \ Wow6432Node \ PHP \ IniFilePath”一键重写任何安装,其原因“PHP --ini”崩溃说明与扩展的版本不匹配加载。
删除键 “HEKY_LOCAL_MACHINE \ SOFTEARE \ Wow6432Node \ PHP” 解决了这个问题。
我想关键是用Windows安装程序为IIS上的FastCGI,但只是猜测创建。
为了记录在案,一些引发的错误有:
“程序输入点php_sys_stat不能设在动态链接库php5.dll。”
“程序输入点php_checkuid不能设在动态链接库php5.dll。”
希望有人用这样一个烂摊子会发现这很有用。