gpt4 book ai didi

php - 处理 gem 数据

转载 作者:太空狗 更新时间:2023-10-29 12:19:09 25 4
gpt4 key购买 nike

我有一个关于通过 PHP 运行 shell 命令的问题。我的目标是通过 PHP 成功运行 compass compile [project]。我尝试了以下方法:

echo system('compass compile [project]', $s); // prints [31m[0m
echo $s; // prints 1

echo passthru('compass compile [project]', $p); // prints [31m[0m
echo $p; // prints 1

echo shell_exec('compass compile [project]'); // prints [31m[0m

echo exec('compass compile [project]', $e, $ee);
print_r($e); // Array ( [0] => [31m[0m )
echo $ee; // prints 1

我什至尝试对包含 compass compile test 的可执行文件运行 shell 命令,但我仍然得到与上述试验相同的结果。

我的问题[31m[0m 是什么意思?这代表二进制数据吗?这些代表bash colors as search engines suggest吗?

据我所知,输出应该是这样的:

Sample output

为了好玩,我尝试通过 system(/usr/local/bin/compass compile [project]); 执行,我得到了相同的结果。我仔细检查了我的路径,所以我知道我可以按预期执行这些命令。以下是 echo $PATH 的输出:

/usr/lib/lightdm/lightdm:
/usr/local/sbin:
/usr/local/bin:
/usr/sbin:
/usr/bin:
/sbin:/bin:
/usr/games:
/usr/local/games:
/var/lib/gems/1.9.1/bin

有没有办法用PHP编译 compass 项目?

最佳答案

我以前见过类似的错误。

通常是由于 bash 启动脚本中输出的内容。例如,我在我的一家 bash 初创公司中有一个 echo ,它加载了大量脚本,直到我意识到是什么导致了问题。

或者,也许用户(www-data?)实际上没有主目录和适当的启动脚本?

你可以试试这个来获得一个非交互式的 shell:

exec("/bin/bash -c \"compass compile [project]\"", $e, $ee);
print_r($e);
echo $ee;

如果仍有问题,请尝试将输出重定向到 tmp 文件,并检查它:

exec("/bin/bash -c \"compass compile [project] > /tmp/compass.compile.output\"", $e, $ee);
print_r($e);
echo $ee;

另请参阅:What's the difference between .bashrc, .bash_profile, and .environment?

关于php - 处理 gem 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15316778/

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