Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP system()如何导出路径_Php_Export_System - Fatal编程技术网

PHP system()如何导出路径

PHP system()如何导出路径,php,export,system,Php,Export,System,我想更改php脚本执行期间的默认系统$PATH变量,但由于某种原因失败了 我正在尝试以下方法: <?php $lastline = system('export PATH=$PATH:/customBin;',$return) OR die("why do i die all the time"); echo $lastline; ?> 但很明显,它一直在消亡。在RHEL和Debian linux发行版(php版本5.3.xx)上都试过,其他系统命令可以很好地使用cat、ls等。这

我想更改php脚本执行期间的默认系统$PATH变量,但由于某种原因失败了

我正在尝试以下方法:

<?php
$lastline = system('export PATH=$PATH:/customBin;',$return) OR die("why do i die all the time");
echo $lastline;
?>
但很明显,它一直在消亡。在RHEL和Debian linux发行版(php版本5.3.xx)上都试过,其他系统命令可以很好地使用cat、ls等。这两个命令都不起作用:export PATH=$PATH:/customBin;或者export PATH=$PATH:/customBin:或者export PATH=/customBin,所有这些都在shell中工作

感谢您的帮助。谢谢

编辑:以上代码错误,解决方案是使用putenv'PATH=$PATH:/customBin'

系统的返回值而不是返回参数是命令输出的最后一行,如果失败,则返回布尔值为FALSE。在您的例子中,它可能成功了。您的$return变量中有int 0用于成功退出,但没有返回任何内容。空字符串可能在or语句中的计算结果为false,因此将执行该骰子。如果要检查导出是否成功,请尝试

system('export PATH=$PATH:/customBin;', $return);
$return === 0 OR die('...');
或者,如果要使用系统的故障处理程序:

(system('export PATH=$PATH:/customBin;') !== FALSE) or die('...');
如果没有测试,结果可能会有所不同。

系统的返回值不是返回参数是命令输出的最后一行,如果失败,则返回布尔值为FALSE。在您的例子中,它可能成功了。您的$return变量中有int 0用于成功退出,但没有返回任何内容。空字符串可能在or语句中的计算结果为false,因此将执行该骰子。如果要检查导出是否成功,请尝试

system('export PATH=$PATH:/customBin;', $return);
$return === 0 OR die('...');
或者,如果要使用系统的故障处理程序:

(system('export PATH=$PATH:/customBin;') !== FALSE) or die('...');
还没有测试过这个,您的结果可能会有所不同。

您使用系统的方法是创建一个新的shell环境,在其中设置路径,然后离开它

此外,你的成功支票也被打破了。该调用返回一个空字符串,然后使条件检查失败

据我所知,您无法操纵调用php的环境。

您使用系统的方法是创建一个新的shell环境,在其中设置路径,然后离开它

此外,你的成功支票也被打破了。该调用返回一个空字符串,然后使条件检查失败


据我所知,您无法操纵调用php的环境。

您可能会更幸运地使用它从php更改环境变量。只需使用获取当前值,添加任何您喜欢的内容,最后调用putenv来更改该值。

您可能会更幸运地使用从PHP更改环境变量。只需使用获取当前值,添加任意内容,最后调用putenv来更改值。

谢谢,但仍然不起作用:我将测试更改为更简单的测试:系统“导出路径=$PATH:/customBin;”$回来echo系统“echo$PATH”@wimvds我尝试过/home/myuser/customBin-这也不起作用-它返回标准:/usr/local/bin:/usr/bin:/bin/usr/local/bin:/usr/bin:/bin,据我所知,导出变量只会在当前会话中更改它。因此,如果您两次调用系统,第二个会话可能不再意识到它具有原始值;echo$PATH;'$返回;?@丹尼斯·阿尔菲斯·乔胡克谢谢你!这样做:系统的导出路径=$PATH:/customBin;echo$PATH;'$回来谢谢,但仍然不起作用:我将测试更改为更简单的测试:系统'export PATH=$PATH:/customBin;'$回来echo系统“echo$PATH”@wimvds我尝试过/home/myuser/customBin-这也不起作用-它返回标准:/usr/local/bin:/usr/bin:/bin/usr/local/bin:/usr/bin:/bin,据我所知,导出变量只会在当前会话中更改它。因此,如果您两次调用系统,第二个会话可能不再意识到它具有原始值;echo$PATH;'$返回;?@丹尼斯·阿尔菲斯·乔胡克谢谢你!这样做:系统的导出路径=$PATH:/customBin;echo$PATH;'$回来是的,我现在明白了。在尝试执行检查时,没有考虑返回值为空。上面的答案是有效的。谢谢,我现在明白了。在尝试执行检查时,没有考虑返回值为空。上面的答案是有效的。谢谢你。这是最好的解决办法。玩系统是一种黑客行为。这是最好的解决办法。玩这个系统是一种恶作剧。