如何在exec命令中使用相对路径?

3
如何使用相对路径在PHP中运行外部程序,使用exec命令?
 <?php

  exec('program_name ......');

 ?>

只有当 program_name.exe与PHP脚本在同一个目录下时,此方法才有效。例如,如果PHP脚本不在“something”目录中,则不能使用exec('something/program_name ......');

2个回答

7
您可以在调用exec()之前使用realpath将相对路径转换为绝对路径。
$rel = 'something/program_name';
$abs = realpath($rel);
exec($abs);

4

将其设为绝对路径,相对路径是邪恶的。

exec(dirname(__FILE__) . 'program_name ......');

如果“program_name”与脚本在同一目录中,则可以工作,但如果像op的情况一样,“php脚本不在'something'目录中”,则无法工作。 - GZipp
@GZipp,作者没有提供足够的信息。他的路径是相对于哪个位置呢?是相对于PHP脚本还是其他未指定的包含路径?我对一个普遍问题给出了一个普遍回答。 - Mike B
但是你的回答对我来说似乎更具体而不是一般性。它适用于当前文件路径内的路径,但不适用于相对于该路径之外的相对路径。无论如何,我只是指出了一个情况,在这种情况下,你的答案可以工作,而在另一个(一般)情况下则不能。 - GZipp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接