不灭的焱

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2020-02-11 15:31:19  修改时间:2024-03-28 22:59:27  分类:PHP基础  编辑

问题描述:

在 Windows 下,用 PHP 用 exec()函数去执行命令行工具时,结果正常,但发布到 Linux 服务器,报 127 错误。

代码如下:

<?php

$cmd = 'java -jar /alidata/www/test.dd.com/facecmd-release/facecmd.jar -act getFaceValue -arg1 /alidata/www/test.dd.com/upload/20200211_355/5e424d99c37c9.png';

$output = null; 
$return_var = null;
exec($cmd, $output, $return_var);

print_r($return_var);
print_r($output);

结果:

$return_var 等于 127

解决方案:

给了执行权限(直接为 777),还是报 127 错误,最后 补全命令行中的 java 路径地址,改为 完整路径,问题解决,参考代码如下:

<?php

$cmd = '/alidata/server/java/jdk_1.8/bin/java -jar /alidata/www/test.dd.com/facecmd-release/facecmd.jar -act getFaceValue -arg1 /alidata/www/test.dd.com/upload/20200211_355/5e424d99c37c9.png';