【问题标题】:How can I make/patch php source (c code) to read an array from php.ini?如何制作/修补 php 源代码(c 代码)以从 php.ini 读取数组?
【发布时间】:2011-06-16 21:22:01
【问题描述】:

我有 php 经验,但我是 php 源代码和 php 扩展的新手。我想扩展 php,让它从数组中随机选择一个 upload_tmp_dir,而不是一个固定的目录。

它看起来不像php,而ini文件读取代码具有解析ini文件中数组的任何自然能力。

是否存在允许将 ini 定义的数组映射到 php 中的全局数组 val 的任何现有代码或扩展(在树中或树之外)?

否则我想我会引入像“num_upload_dirs”这样的ini val,然后是“upload_tmp_dir_1”和“upload_tmp_dir_2”等,然后显式检查所有val。

或者自己将行解析和全局数组创建例程写入 ini 文件阅读器。两者都不是很吸引人。还有其他建议吗?

【问题讨论】:

    标签: php php-extension php-internals


    【解决方案1】:

    ini 文件格式不支持数组。

    执行 uplaod_tmp_dir_1 等将为您提供最好的服务。使用数组语法没有任何好处。

    如果你仔细想想,它实际上是更少的字节。 ;)

    【讨论】:

    • 谢谢。我想你是正确的。不过,数组维护起来更自然,因此维护者不必自己创建索引。
    • 致反对者:我知道parse_ini_file 将处理数组。我说的是缺乏 php 源语法糖的低级 c 代码。
    【解决方案2】:

    PHP 默认支持 ini 文件中的数组。无需修补任何东西

    ini

    key[] = value1
    key[] = value2
    

    用这个 php

    var_dump(parse_ini_file('my.ini'));
    

    返回

    array(1) {
      ["key"]=>
      array(2) {
        [0]=>
        string(6) "value1"
        [1]=>
        string(6) "value2"
      }
    }
    

    【讨论】:

    • 这个问题是关于 php 源和扩展 php 本身以改变它使用upload_tmp_dir 的方式。看起来你在谈论解释的 .php 代码......在解释 .php 代码时,上传 tmp 位置是固定的,这就是我需要更改 php 源的原因。
    • 再读几遍,我认为你是对的。我认为它一般是关于“inis中的数组”。我没有找到在运行时更改此目录的方法(反正已经很晚了,文件已经上传了),所以:是的,对,答案已经过时了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多