微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为每个虚拟主机创build自定义的php.ini文件?

我已经安装了EasyPHP WAMP进行本地开发(我没有托pipe任何网站)。

有没有办法为独立的虚拟主机设置自定义PHP设置?

目前和开箱即用, PHP.ini文件从C:Program Files (x86)easyphp-devserver-14.1VC11binariesPHPPHP_runningversionPHP.ini ,比方说,我可以将自定义PHP.ini文件放入虚拟主机目录,以覆盖原始PHP.ini设置。这样,我可以更好地在每个站点上模拟生产服务器的环境。

我已经看到这个工作与在线托pipe帐户。 但我无法弄清楚如何使这个工作在我的机器上。

Django性能/内存使用情况

.htaccess只允许访问和redirect到根目录index.PHP只有一个目录

ldap_bind()失败,“无法联系LDAP服务器”

不同的VirtualHosts具有相同的端口

在cron作业中执行PHP脚本

.htaccess中的基本URL

使用.htaccess在多个条件下的URL重写/redirect/限制

PHP – 大量发布500 Apache内部服务器错误

.htaccess:如果调用特定的目录,则重写整个URL

PHP错误日志不工作

对于基于CGI / FastCGI的PHP安装,使用自定义PHP.ini文件非常简单,但是当以Apache模块(mod_PHP)运行PHP时不可行,因为整个服务器运行PHP解释器的单个实例。

我的建议:

PHP本身设置尽可能多的设置:

ini_set('memory_limit','16M'); date_default_timezone_set('Europe/Madrid') ...

换句话说,可以在运行时改变的指令。

从每个目录的Apache设置文件(又名.htaccess )设置其余的东西:

PHP_flag short_open_tag off PHP_value post_max_size 50M PHP_value upload_max_filesize 50M

即在脚本开始运行之前需要定义的设置

请查看运行时配置以获取更多详细信息。

有时,实际上在开发和生产中需要不同的设置。 有无数的方法解决PHP代码(从创建一个布尔常量从$_SERVER['HTTP_HOST']变量只是一个config.PHP文件具有不同的值),但它是棘手的.htaccess 。 我通常使用<IfDefine>指令 :

<IfDefine DEV-Box> # # Local server directives # SetEnv DEVELOPMENT "1" PHP_flag display_startup_errors on PHP_flag display_errors on PHP_flag log_errors off #PHP_value error_log ... </IfDefine> <IfDefine !DEV-Box> # # Internet server directives # PHP_flag display_startup_errors off PHP_flag display_errors off PHP_flag log_errors on PHP_value error_log "/home/foo/log/PHP-error.log" </IfDefine>

…其中DEV-Box一个字符串,我传递给本地Apache命令行:

C:Apache24binhttpd.exe -D DEV-Box

如果将Apache作为服务运行,则可以在Windows注册表中添加-D DEV-Box位,例如:

HKEY_LOCAL_MACHInesYstemCurrentControlSetservicesApache2.4ParametersConfigArgs

相关: 了解PHP如何在服务器上运行(CGI或fastCGI或mod_PHP

使用Fast CGI为vhost使用自定义PHP.ini文件的简单方法是将PHP.ini复制到主机中的文件夹(如“customini”)。

之后,你的虚拟主机指令,并添加这个简单的线条:

FcgidInitialEnv PHPRC "/path_to_your_custom_ini_dir_for_this_vhost/"

确保您的路径没有 ,(它不会与 )

重新启动Apache。

就这样!

完整示例(在Windows server上):

<VirtualHost *:80> DocumentRoot "C:/APACHE/htdocs/vhost/myvhost" serverName www.vhost.com FcgidInitialEnv PHPRC "C:/APACHE/customini/myvhost/" </VirtualHost>

几位评论家提到流浪者是一个很好的解决方案。

如果您对使用Vagrant不感兴趣,可以使用FastCGI作为您的Apache接口,并使用本博客中提出的SetEnv PHPRC...建议:

Apache&PHP:多个PHP.ini配置文件(2009年2月8日星期日)

资料来源: http : //hyponiq.blogspot.com/2009/02/apache-PHP-multiple-PHPini.html

第二个解决方法是使用SetEnv伪指令在Apache中配置PHPRC环境变量。 该指令允许您设置一个环境变量,然后将其传递给在任何静态(x)HTML页面(或其他文档类型)中设置的任何CGI脚本和/或服务器端包含(SSI)。 在这个例子中,你会告诉每个php-cgi实例在哪里找到它的配置设置。 这个例子是(与前一个一致):

# vhosts.conf NameVirtualHost *:81 <VirtualHost *:81> serverAdmin [email protected] serverName vhost.example.com DocumentRoot "C:/path/to/doc/root" ErrorLog "logs/vhost.example.com-errors.log" # Set the PHPRC environment variable SetEnv PHPRC "C:/path/to/doc/root/PHP.ini" <Directory "C:/path/to/doc/root"> # ... yadda,yadda,yadda ... # you get the point! </Directory> </VirtualHost>

但是, 更改运行时配置的PHP文档建议您可以使用某些值,如PHP_value来尝试loaalong,可能还会使用SetEnv指令。

他建议另一个选项不使用FastCGI,而是利用PHP_value , PHP_flag等配置选项。

其他人似乎已经通过FastCGI执行脚本取得了一些成功,请参阅: 分开PHP.ini为不同的虚拟主机

其他建议涉及PHPINI指令,这可能与您的需求有关,请参阅: 我如何限制PHP应用程序到自己的目录和他们自己的PHP.ini?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐