2017-03-06 90 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被激活,只要我停用腳本開始工作完美。