我正在尝试暂时将allow_url_fopenrename函数用于脚本。我可以只使用一个功能,但不能同时使用两个功能。

这样的事情:

php -d allow_url_fopen=on rename=on <file>


我正在使用PHP 5.6显然,rename()在我的php.ini文件中的disable_functions中(而allow_url_fopen在该文件之外已关闭),所以我假设-d选项没有变化disable_functions指令的设置。

因此,原来的问题仍然存在,并且有一个新问题:

是否可以使用命令行工具启用禁用的功能?还是我必须重新定义整个disable_functions指令(如果可能)?

更新两个

这适用于我的情况:

php -d disable_functions=fn1,fn2,etc -r 'ini_set("allow_url_fopen", "1");' <file> <args>


不能使用ini_set()更改disable_functions指令。如果您的php.ini文件中还有另一条指令不能被ini_set()更改,那么我不知道该如何解决。我的问题已解决,尽管原始问题尚未得到解决。

评论

也许为每个选项尝试-d。

@mkaatman我已经尝试过了。 = /

解决了这一点之后,我只能使-d与-r一起使用。似乎如果您在其中传递文件,则它会完全忽略-d。也许您可以传入要传递的设置的文件和ini文件。无论如何,这是相关的文档:php.net/manual/en/features.commandline.options.php

@mkaatman我已经尝试过php -B'ini_set(“ allow_url_fopen”,“ 1”); ini_set(“ rename”,“ 1”);'和php -r'ini_set(“ allow_url_fopen”,“ 1”); ini_set(“ rename”,“ 1”);'无济于事。不过请参阅我更新的问题。

您是否停留在不允许您更改php.ini的主机上?

#1 楼

您只需为要定义的每个设置定义一个-d OPTION块。

您需要运行:

php -d allow_url_fopen=on -d rename=on <file>