无法使用 PHP 的 exec() 运行可执行文件,可能存在权限问题

问题描述 投票:0回答:0

我在使用 PHP 的

exec
函数执行命令时遇到问题。我认为有两个不同的权限(或者可能是环境?)问题。

在这种情况下,我遇到问题的可执行文件是 OpenAI 的 Whisper。安装程序是 Ubuntu 22.04.2 LTS、Apache 2.4.52、PHP 8.1.5.

PHP 作为 Web 服务器用户

exec
运行
www-data
函数。 (我已经用
exec('whoami')
确认了这一点。)

Whisper 是使用

pip
在我的常规用户名下安装的,我称之为
myrealusername
.

在我的常规用户名下的命令提示符下,如果我输入

whereis whisper
,我会得到答案
whisper: /home/myrealusername/.local/bin/whisper
。但是,如果我尝试
sudo -u www-data whereis whisper
,我得到答案
whisper:
,这向我表明 Web 服务器用户
www-data
只是找不到 Whisper。

我尝试使用

exec
运行的命令是
whisper 'mediafilename.mp3' --model tiny --language English > 'outputfilename.txt'
。 (这有点简化;实际上,
mediafilename.mp3
outputfilename.txt
指定了各自的路径,我不会在这里重复;我确保这些路径归 www-data 所有。)使用我的常规用户名
myrealusername
运行时生成输出,前提是输入和输出归该用户名所有。

当我尝试使用 PHP 的

exec
函数运行上述命令时,
outputfilename.txt
被创建为
www-data
拥有的空文件,权限为 0644 (rw-r--r--)。无论 Whisper 在命令中指定为
whisper
还是完整路径
/home/myrealusername/.local/bin/whisper
.

都是如此

当我尝试使用命令提示符(首先确保输出文件被删除)以

sudo -u www-data whisper 'mediafilename.mp3' --model tiny --language English > 'outputfilename.txt'
的 Web 服务器用户运行上述命令时,我得到
outputfilename.txt: Permission denied
,并且 not 创建输出文件。无论我将 Whisper 指定为
whisper
还是
/home/myrealusername/.local/bin/whisper
都是如此。

但是,如果创建输出文件并将其权限手动更改为 rw-r--rw- 使用

sudo chmod 0646 outputfilename.txt
,然后,在命令行中,
sudo -u www-data whisper 'mediafilename.mp3' --model tiny --language English > 'outputfilename.txt'
给出错误
whisper: command not found
sudo -u www-data /home/myrealusername/.local/bin/whisper 'mediafilename.mp3' --model tiny --language English > 'outputfilename.txt'
给出错误

Traceback (most recent call last):
  File "/home/myrealusername/.local/bin/whisper", line 5, in <module>
    from whisper.transcribe import cli
ModuleNotFoundError: No module named 'whisper'

所以,我想我可能有两个不同的问题。首先,尽管 PHP 能够创建输出文本文件

outputfilename.txt
,但它没有适当的权限来写入相对于
whisper
命令的文件。 (令我感到奇怪的是
www-data
甚至无法从命令行 create 输出文件,而 PHP 可以以某种方式创建(空)输出文件,但我不确定该怎么做。)其次,我认为 PHP(即 www-data 用户)无法找到或运行
whisper
命令。

拜托,如果您有任何想法或解决方案,我将不胜感激。

php apache ubuntu permissions openai-whisper
© www.soinside.com 2019 - 2024. All rights reserved.