我目前正在使用位于此处的 Pygments for PHP 插件:http: //derek.simkowiak.net/pygments-for-php/。
从该代码中实际调用 Pygments 的行是传递的 exec() :
pygmentize -f html $extra_opts -l $language $temp_name作为命令。这一切都很好,我得到了输出并由插件格式化。
我希望同时发生的是让 Pygments 创建它的图像,所以我通过 exec() 一个类似的命令:
pygmentize -f png $extra_opts -l $language -o $full_image_path/$output_file.png $temp_name这是我遇到问题的地方。该图像永远不会出现在预期的文件夹中。
但是,如果我在它var_dump()
之前使用那个命令字符串exec()
并直接从命令行运行它,它就可以正常工作。
我尝试回显 exec('whoami') 告诉我 PHP 用户是 www-data。我已经尝试授予 www-data 权限并将所有权更改为我存储图像的文件夹上的 www-data 。我还尝试将权限更改为 777 只是为了看看会发生什么,答案是什么都没有。
有什么我想念的吗?我已经没有想法可以尝试了。谢谢!
编辑:我检查的另一件事是 exec 命令的输出和返回值。它输出一个空数组,并返回 1 作为返回值。
编辑 2:在看到该目录应该对 PHP 用户可写/可读后,pygments 是否可能无权将其作为特定用户写入?我不确定这是否有意义,因为当我自己运行它时它工作正常,事实上,当 PHP 使用 HTML 词法分析器运行它时,它能够运行。我在 Python 方面不是很有经验,所以我不知道这是否是一个潜在的问题。