我是靠谱客的博主 认真百褶裙,最近开发中收集的这篇文章主要介绍php exec 255,Apache下的PHP exec()在运行脚本时返回null和255,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

好吧,在经过了几个小时之后,我决定寻求帮助。 我有一个运行Apache 2.4和PHP 7.1的Windows Server 2008。 当用户点击浏览器上的button时,我的应用程序必须在服务器上运行PHP脚本。

这在Windows 10的桌面上工作正常。但是,在服务器上,exec()返回“null”,退出代码为255。

我读了所有我能find的exec()问题,并尝试以下内容:

exec("C:\PHP7\php.exe -v", $output);

我得到了包含PHP版本信息的正确响应。

然后我决定检查configuration文件:

exec("C:\PHP7\php.exe --ini", $output);

所有的文件都到位了。

然后我决定对我的脚本执行语法检查:

exec("C:\PHP7\php.exe -d display_errors=1 -l C:\Apache24\htdocs\script.php", $output);

没有发现错误。

最后,我决定检查用户帐户:

exec("whoami", $output);

按预期得到“NT Authority SYSTEM”。 为了确保脚本能够在SYSTEM帐户下运行,我使用了SysInternals psexec:

psexec -s C:PHP7php.exe C:Apache24htdocsscript.php

一切顺利。

换句话说,脚本在用户帐户或系统帐户下从命令行执行时不会显示任何问题。 我也已经certificate,由exec()正确调用PHP。

那么,我决定检查我的代码中的“隐藏”错误,在脚本的最开始添加以下两行:

error_reporting(E_ALL); ini_set('display_errors', 1);

但是,没有喜悦。 我没有想法。

任何好的灵魂能帮助我吗?

感谢一堆,

米格尔。

最后! 答案的关键在于: PHP exec()git fetch失败,返回值为255 。

我无法看到任何错误,即使将“2>&1”管道重定向添加到我的命令。 读完这篇文章后,我了解到proc_open()比exec()更好。 从PHP的文档引用:

proc_open()类似于popen(),但是对程序执行提供了更大程度的控制

所以,我用几行代码替换了我的exec()(参考手册中的例子),发现问题是由启用了CLI的Zend Opcache引起的。 对我来说更快的解决方案是在命令行中禁用它:

php.exe -d opcache.enable_cli=0 myscript.php

瞧! 问题解决了!

最后

以上就是认真百褶裙为你收集整理的php exec 255,Apache下的PHP exec()在运行脚本时返回null和255的全部内容,希望文章能够帮你解决php exec 255,Apache下的PHP exec()在运行脚本时返回null和255所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部