Centos php在浏览器或命令行上的执行方式不同

Centos php在浏览器或命令行上的执行方式不同,centos,php-7,apache2.2,Centos,Php 7,Apache2.2,大家早上好, 我刚刚用PHP7.0.13和Apache2.2构建了一个CentOS服务器,最奇怪的事情发生在测试它时。 我有一个curl脚本,它在命令行中运行得非常好,但在通过浏览器调用时却不行。经过一点调查,我意识到,如果我通过浏览器进行操作,我也无法写入文件,但通过命令行进行操作,我没有任何问题 我假设问题出在两个不同的php.ini文件上,但在验证phpinfo之后,我意识到CL和浏览器加载的都是相同的,而且所有扩展似乎也加载正确,通过使用get_current_user()我还可以验证相

大家早上好, 我刚刚用PHP7.0.13和Apache2.2构建了一个CentOS服务器,最奇怪的事情发生在测试它时。 我有一个curl脚本,它在命令行中运行得非常好,但在通过浏览器调用时却不行。经过一点调查,我意识到,如果我通过浏览器进行操作,我也无法写入文件,但通过命令行进行操作,我没有任何问题

我假设问题出在两个不同的php.ini文件上,但在验证phpinfo之后,我意识到CL和浏览器加载的都是相同的,而且所有扩展似乎也加载正确,通过使用get_current_user()我还可以验证相同的用户同时执行这两个文件。我假设问题出在apache中,但我不知道是什么导致了它


有人能指出解决这个问题的可能途径吗?从这一点开始,我不知道该怎么办。

正如哈桑指出的,问题在于用户执行脚本

我犯了一个错误,认为get_current_user()表示执行脚本的用户,而不是,它表示文件所有者

如果您有类似的问题并且需要确定谁在执行脚本,请使用exec('whoami');相反


编辑:好的,虽然这是一个错误,但主要错误是在我停用脚本后立即激活了SELinux。通过终端,您通常使用root用户,除非您更改了用户,否则在apache2服务器中,您使用的是普通特权用户,通常称为
www-data
user,这通常通过更改dir权限来解决。但是,如果您提供完整的代码示例会更好。您完全正确,老实说,这里的代码并不重要,因为curl或fopen都失败了,但这是由于执行脚本的不同用户造成的。get_current_user()提供脚本的所有者,而不是执行者,以查找执行脚本的用户使用:exec('whoami');