我有一台运行 Apache 2.2.21 和 PHP 5.3.8 的 Mac OS X 服务器
我想在每个目录的基础上设置一些 php.ini 样式指令。根据PHP手册页 http://www.php.net/manual/en/configuration.file.per-user.php,从 PHP 5.3.0 开始,可以通过在包含您想要受影响的脚本的目录中放置一个名为“.users.ini”的文件来覆盖每个目录中主 php.ini 运行时配置文件中的指令。
对我来说,这个解决方案比使用 .htaccess 文件中包含的 php_value 和 php_flag 指令更可取,但是我创建的 .user.ini 文件被 PHP 忽略。
根据 phpinfo(),我的 .user.ini 文件应该每 5 分钟重新缓存一次,并且文件名正确设置为“.user.ini”:
user_ini.cache_ttl 300
user_ini.filename .user.ini
Apache 设置为AllowOverides,并且我已经确认通过 .htaccess 文件设置 PHP 指令正确地覆盖了我想要控制的 ini 设置。我尝试过的最简单的测试文件是 .user.ini 文件,仅包含以下行:
display_errors = On
这不起作用,并且使用系统范围的目录(=Off)。但是,等效的 .htaccess 文件按预期工作,覆盖系统范围指令:
php_flag display_errors on
我能找到的一条线索是主 php.ini 文件开头的神秘 [PHP]。我在手册中找不到任何提及此部分标记的内容,因此我认为也许有必要以 [PHP] 开头该文件。我尝试将其添加到我的 .user.ini 文件的开头,然后重新加载我的页面,又等了五分钟,再次重新加载,以确保我没有加载缓存版本,不幸的是它没有任何区别。
我发现的另一个线索是前面提到的 PHP 中同样神秘的语句手册页 http://nz.php.net/manual/en/configuration.file.per-user.php描述如何使用 .user.ini 文件:“这些文件仅由 CGI/FastCGI SAPI 处理。”不幸的是,我不知道如何确认这个条件是否得到满足,除了我的 phpinfo() 输出中的行:“GATEWAY_INTERFACE CGI/1.1”,因为我的 phpinfo() 中几乎没有字符串“cgi”的其他实例( ) 输出。我只能假设这个神秘的陈述并不重要,只是说明 CGI/FastCGI SAPI 进行处理(无论这意味着什么),而不是警告我需要打开某些东西。如我错了请纠正我。
在同一 .user.ini 手册页的注释中还提到,使用 php-fpm 时,.user.ini 文件的处理将不起作用。据我所知,我没有使用它,但如果有一个简单的方法来检查,请告诉我。这确实引发了一个问题:是否存在其他配置选项或模块与该功能冲突并禁用 .user.ini 文件的加载。有人知道答案吗?
为了完整起见,我包含了我的配置命令,以防有人看到一些明显的问题,尽管我认为我没有更改默认值:
'/private/var/tmp/apache_mod_php/apache_mod_php-53.8~2/php/configure' '--prefix=/usr' '--mandir=/usr/share/man' '--infodir=/usr/share/信息''--disable-dependency-tracking'''--sysconfdir=/private/etc'''--with-apxs2=/usr/sbin/apxs'''--enable-cli'''--with-config-file -path=/etc' '--with-libxml-dir=/usr' '--with-openssl=/usr' '--with-kerberos=/usr' '--with-zlib=/usr' '- -enable-bcmath' '--with-bz2=/usr' '--enable-calendar' '--with-curl=/usr' '--enable-exif' '--enable-ftp' '--with -gd''--with-jpeg-dir=/BinaryCache/apache_mod_php/apache_mod_php-53.8~2/Root/usr/local''--with-png-dir=/BinaryCache/apache_mod_php/apache_mod_php-53.8~2/Root /usr/local' '--enable-gd-native-ttf' '--with-ldap=/usr' '--with-ldap-sasl=/usr' '--enable-mbstring' '--enable- mbregex''--with-mysql=mysqlnd''--with-mysqli=mysqlnd''--with-pdo-mysql=mysqlnd''--with-mysql-sock=/var/mysql/mysql.sock'' --without-pear' '--with-iodbc=/usr' '--enable-shmop' '--with-snmp=/usr' '--enable-soap' '--enable-sockets' '--启用 sysvmsg' '--启用 sysvsem' '--启用 sysvshm' '--启用 wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl =/usr' '--enable-zend-multibyte' '--enable-zip' '--with-pcre-regex=/usr'
(亲爱的读者,既然您已经读到这里,如果您确实发现上述配置有一些不相关的奇怪之处,请随时在原始帖子附带的评论中提及)