gpt4 book ai didi

php - PHP exec输出与命令行输出不同吗?

转载 作者:行者123 更新时间:2023-12-03 05:25:27 25 4
gpt4 key购买 nike

上下文:
我有一个简单的html前端,可让用户输入一些基本详细信息,例如使用的颜色。然后将其放置在我的strings.xml文件中,以便我们可以快速推出预览版本。 Windows 10 64位运行WAMP,使用Gradle 3.6进行构建。

目标:
使用PHP从命令行构建更新的应用程序。

问题:
当我通过命令行手动构建时,项目可以正确构建,但是当我使用PHP的exec函数时,构建失败。

gradle包装器必须从基础项目文件夹中执行,因此需要cd ...

首先,我清理项目,然后执行:cd path/to/projectdir && gradlew clean 2>&1从exec和命令行按预期进行的工作。

接下来是使用cd path/to/projectdir && gradlew assemble 2>&1构建。
通过命令行运行以上命令返回成功:

command line build success

但是,对exec('cd path/to/projectdir && gradlew assemble 2>&1', $output)运行相同命令并打印输出将返回:
... [24] => FAILURE: Build failed with an exception.
[25] =>
[26] => * What went wrong:
[27] => Execution failed for task ':app:processDebugResources'.
...(完整输出https://pastebin.com/zdeXuukp)

据我所知,两者之间的唯一区别是进程所有者(基于exec('whoami'))。
是否知道这可能是导致失败的原因,还是导致PHP exec构建失败的其他原因?

最佳答案

经过大量挖掘后,我的怀疑得到了证实,这确实是由于apache用户具有不正确的权限。
这是答案:Is it possible to have WAMP run httpd.exe as user [myself] instead of local SYSTEM?

在这种情况下,我只是在本地计算机上玩耍,并且显然不会在生产环境中推荐这种方法,无论如何,这是我解决的方法:

  • 关闭WAMP。
  • 打开services.msc(win + r services.msc)
  • 更改wampapache64,wampmariadb64和wampmysqld64右键单击>“属性”>“登录”选项卡,并指定一个用户帐户以启动服务(我使用我的用户帐户,因为我知道它已经具有正确的权限)并应用更改。
  • 打开WAMP。
  • 现在,使用简单的echo exec('whoami')通过浏览器访问PHP页面的输出应与直接在命令行中运行whoami的输出相同。

  • 我的脚本现在可以正确执行,并且返回与通过命令行运行时相同的输出。

    关于php - PHP exec输出与命令行输出不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61446904/

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