我有一台运行 Apache 2.2.21 和 PHP 5.3.8 的 Mac OS X 服务器
我想在每个目录的基础上设置一些 php.ini 样式指令。根据 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手册页中描述如何使用 .user.ini 文件的同样神秘的陈述:“这些文件仅由 CGI/FastCGI SAPI 处理。” 不幸的是,除了我的 phpinfo() 输出中显示“GATEWAY_INTERFACE CGI/1.1”的行之外,我不知道如何确认此条件是否得到满足,因为在我的 phpinfo( ) 输出。我只能假设这个神秘的声明并不重要,只是说明 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/ info' '--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' '--enable-sysvmsg' '--enable-sysvsem' '--enable- sysvshm' '--enable-wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte' '-- enable-zip' '--with-pcre-regex=/usr'--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' '--enable-sysvmsg' '--enable-sysvsem' ' --enable-sysvshm' '--enable-wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte ' '--enable-zip' '--with-pcre-regex=/usr'--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' '--enable-sysvmsg' '--enable-sysvsem' ' --enable-sysvshm' '--enable-wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte ' '--enable-zip' '--with-pcre-regex=/usr'--enable-sysvshm' '--enable-wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte ' '--enable-zip' '--with-pcre-regex=/usr'--enable-sysvshm' '--enable-wddx' '--with-xmlrpc' '--with-iconv-dir=/usr' '--with-xsl=/usr' '--enable-zend-multibyte ' '--enable-zip' '--with-pcre-regex=/usr'
(亲爱的读者,既然您已经阅读了这么多,如果您确实看到与上述配置无关的奇怪之处,请随时在此原始帖子的评论中提及)