我有一个具有shell_exec调用的php文件。 shell_exec函数运行一个.sh文件。
#!/bin/bash
filename=$(ls *.jpg -Art | tail -n 1)
codegen_dir=/usr/local/codegen/
cd "$codegen_dir"
out=$(./classifier /var/www/$filename)
echo $out
可执行文件'classifier'存在于codegen_dir中,并且具有1个共享库依赖项。该脚本从命令行正确运行。 php文件也可以从命令行正确运行。但是,当我将php文件作为http请求运行时,我在std_err中得到以下内容:
“。/分类器:加载共享库时出错:libreader.so:无法打开共享库文件:没有这样的文件或目录”
.so文件与可执行文件位于同一目录中
我的php服务器根目录是:/ var / www
答案 0 :(得分:0)
apache用户可能无法访问共享的库路径。您可以在sudoers文件中为apache允许分类器程序,并使用sudo以apache用户身份运行分类器应用程序
或 更改共享的权限,使所有用户都可以访问共享的libraray及其路径
out=$(sudo ./classifier /var/www/$filename)
尝试使用apache用户登录并运行上述脚本,或者尝试访问共享的lib
su -s /bin/bash apache