Php proc_open在白名单_功能中,但在应用程序引擎中不可用

Php proc_open在白名单_功能中,但在应用程序引擎中不可用,php,laravel,wkhtmltopdf,app-engine-flexible,google-app-engine-php,Php,Laravel,Wkhtmltopdf,App Engine Flexible,Google App Engine Php,我正在尝试将一个Laravel应用程序部署到具有自定义PHP运行时的AppEngine灵活环境中。 当我尝试在站点上生成PDF(使用wkhtmltopdf和laravel snappy包装器)时,我得到错误: (1/1)逻辑异常 The Process class relies on proc_open, which is not available on your PHP installation. in Process.php line 143 at Process->__const

我正在尝试将一个Laravel应用程序部署到具有自定义PHP运行时的AppEngine灵活环境中。 当我尝试在站点上生成PDF(使用wkhtmltopdf和laravel snappy包装器)时,我得到错误: (1/1)逻辑异常

The Process class relies on proc_open, which is not available on your PHP installation.
in Process.php line 143 
at Process->__construct(array(), null, null, null, 60.0)in Process.php line 195
at Process::fromShellCommandline('/app/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 --lowquality \'/tmp/knp_snappy5dc8497d489631.19576754.html\' \'/tmp/knp_snappy5dc8497d489f90.93505253.pdf\'', null, null)in AbstractGenerator.php line 520
at AbstractGenerator->executeCommand('/app/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64 --lowquality \'/tmp/knp_snappy5dc8497d489631.19576754.html\' \'/tmp/knp_snappy5dc8497d489f90.93505253.pdf\'')in AbstractGenerator.php line 176
但问题是,我在app.yaml的白名单函数行中列出了proc_open和proc_closed

以下是我的app.yaml中的一个片段:

runtime:         custom
env:             flex
api_version:    1

runtime_config:
  document_root:  public
  whitelist_functions: proc_open,proc_close
为了尝试其他方法,我还尝试将其包含在php.ini中:

google_app_engine.enable_functions = "php_sapi_name,php_uname,getmypid,proc_open, proc_close"
google_app_engine.disable_functions ="exec,passthru,shell_exec,show_source,symlink,system"
但我仍然得到上面的错误

如果相关,我还将显示我的Dockerfile:

FROM gcr.io/google-appengine/php

COPY ./ /app
RUN mkdir -p /app/storage/framework/cache \
    mkdir -p /app/storage/framework/cache/data \
    mkdir -p /app/storage/framework/views \
    mkdir -p /app/storage/framework/sessions \
    mkdir -p /app/storage/logs
RUN chmod -R a+rwX /app/storage
RUN chmod a+rwx /app/vendor/h4cc/wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64
ENV DOCUMENT_ROOT /app/public

RUN apt-get update && apt-get -y install libfontconfig1 libxrender1 libxext6 libssl-dev libssl1.0 libjpeg62 libpng16-16

EXPOSE 8080
。。。以及my composer.json中的相关位:

"require": {
    "php": ">=7.2.9",
    "laravel/framework": "^6.0",
    "google/cloud": "^0.24.0",
    "superbalist/laravel-google-cloud-storage": "^2.0",
    "barryvdh/laravel-snappy": "^0.4.3",
    "h4cc/wkhtmltopdf-amd64": "0.12.x",
    "h4cc/wkhtmltoimage-amd64": "0.12.x"
},
我错过什么了吗

更新:我不确定这是否相关,或者只是下一步需要处理的另一个错误,但是如果我尝试直接从命令行运行wkhtmltopdf,在加载共享库时会出现
错误:libssl.so.1.1:无法打开共享对象文件:没有这样的文件或目录

但是我无法安装它,因为它似乎不适用于我正在使用的Linux版本(Ubuntu 16.04.6)。

您可以查看以下示例:

如果需要这些函数中的任何一个,可以添加一个环境 变量白名单函数


您是否使用作业队列来执行HTML到PDF?是和否。较大的报表使用数据库队列驱动程序的排队作业。我用来测试我的更改的那个并没有使用排队作业。Marian的答案是有效的,但我只有在使用作业队列运行它时才发现错误。通过将App Engine中的所有流量切换到我正在测试的版本,错误得以解决。成功了!事实证明,我可能做了其他错误的事情,假设php.ini中的
disable_函数
是一个应用程序引擎,而不是。
app.yaml:

runtime: php
vm: true
api_version: 1

env_variables:
  WHITELIST_FUNCTIONS: phpinfo,exec