2017-03-06 47 views
0

早上好伙计 我刚用PHP 7.0.13和apache 2.2构建了一个CentOS服务器,测试时发生了奇怪的事情。 我有一个curl脚本,通过命令行可以很好地工作,但不是在通过浏览器调用时,在调查了一下之后,我意识到如果通过浏览器执行操作,我也不能写入文件,但我没有问题无论通过命令行来做什么。php在浏览器或命令行上的执行方式不同

我认为问题将出现在两个不同的php.ini文件中,但在验证了phpinfo后,我意识到CL和浏览器都加载了相同的文件,并且所有扩展名似乎也都正确加载,使用get_current_user()我也可以验证相同的用户正在执行两者。我会认为这个问题会出现在Apache中,但我不知道是什么原因造成的。

有人可以指出可能的途径来解决问题吗?从这一点起,我不知道该怎么做。

+0

通过您的终端,通常您正在使用根(除非您更改了您的用户),在您正在通过常规特权用户(通常称为“www-data”用户)工作的apache2服务器中,通常会通过更改目录权限。然而,如果您提供了一个完整的代码示例,它会更好。 – hassan

+0

你是绝对正确的,这里的代码是无差别的,因为curl或fopen都失败了,但这是由于不同的用户执行脚本。 get_current_user()给出脚本的所有者,而不是执行者,找出执行脚本的用户使用:exec('whoami'); –

回答

0

由于哈桑指出问题出在用户执行脚本。

我提出了一个错误思考get_current_user()指示用户执行脚本,它不,它表示文件的所有者。

如果您有类似的问题,并需要指出谁在执行脚本,请使用exec('whoami');代替。

编辑:好吧,虽然这是错误之一,主要错误是事实上,SELinux被激活,只要我停用脚本开始工作完美。

相关问题