gpt4 book ai didi

php - 在 PHP 中以用户身份执行 Linux 命令

转载 作者:太空宇宙 更新时间:2023-11-04 03:58:12 24 4
gpt4 key购买 nike

我正在将文档文件转换为 html。我已在 Linux 服务器上安装了 LibreOffice。

这是命令,

$cmd = "libreoffice4.1 --headless -convert-to html /var/www/html/CV.doc -outdir /var/www/html/";

当我直接在 Linux 服务器上执行时,该命令工作正常,但当我尝试通过 PHP 执行它时,它不会转换。

exec($cmd,$out,$err);

$err 正在打印 127

请让我知道我在这里做错了什么。

最佳答案

你这样说:

This command is working fine when I execute directly on the Linux server but when I tried to execute it via PHP it will not convert.

你的命令是这样的:

$cmd = "libreoffice4.1 --headless -convert-to html /var/www/html/CV.doc -outdir /var/www/html/";

当用户登录系统时,libreoffice4.1 的路径可能是默认用户路径的一部分。但是当 Apache(我假设)运行 PHP 时,它不知道 libreoffice4.1 二进制文件在哪里。

所以我的解决方案是在命令中包含文件的完整路径,如下所示:

$cmd = "/full/path/to/this/binary/libreoffice4.1 --headless -convert-to html /var/www/html/CV.doc -outdir /var/www/html/";

当然,将 /full/path/to/this/binary/ 替换为文件的实际路径。

您可以通过登录服务器并输入以下命令轻松确定二进制文件的完整路径:

which libreoffice4.1

返回的输出应该是您的libreoffice4.1二进制文件的完整路径。路径应该是这样的:

/usr/bin/libreoffice4.1

或者这个:

/usr/local/bin/libreoffice4.1

但是您系统上的 which 命令将返回文件的完整路径,因此请使用该输出作为指导。

关于php - 在 PHP 中以用户身份执行 Linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23971544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com