作者 主題: 利用 fopen 建檔的怪問題  (閱讀 5494 次)

0 會員 與 1 訪客 正在閱讀本文。

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
利用 fopen 建檔的怪問題
« 於: 2009-08-17 19:07 »
PHP 檔大致如下:
<?
  echo "php start";
  $fp = fopen("abc.test","w");
  fwrite($fp,"okok123");
  fclose($fp);
?>

 :D我利用 Dev-PHP IDE 1.9.4 進行開發,PHP version: 5.2.5
"執行PHP Script" 可以正常建立檔案.
 ???但我放到 Linux apache 上 (PHP version: 5.2.6  ,  apache version: 2.2.10)
Win XP 開啟網頁, 卻無法建立檔案,(有印出第一行的 php start)

該資料夾權限全開777
php.ini 我有設定
allow_url_fopen = On
allow_url_include = On
開啟網頁用的是 Firefox 3.0.13
有嘗試將雙方的防火牆全部關掉, 還是一樣~

請各位大大幫忙解答 謝謝
« 上次編輯: 2009-08-17 19:09 由 id4fox »

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: 利用 fopen 建檔的怪問題
« 回覆 #1 於: 2009-08-18 02:34 »
PHP 檔大致如下:
<?
  echo "php start";
  $fp = fopen("abc.test","w");
  fwrite($fp,"okok123");
  fclose($fp);
?>

 :D我利用 Dev-PHP IDE 1.9.4 進行開發,PHP version: 5.2.5
"執行PHP Script" 可以正常建立檔案.
 ???但我放到 Linux apache 上 (PHP version: 5.2.6  ,  apache version: 2.2.10)
Win XP 開啟網頁, 卻無法建立檔案,(有印出第一行的 php start)

該資料夾權限全開777
php.ini 我有設定
allow_url_fopen = On
allow_url_include = On
開啟網頁用的是 Firefox 3.0.13
有嘗試將雙方的防火牆全部關掉, 還是一樣~

請各位大大幫忙解答 謝謝

查一下錯誤訊息吧, 或是先將 display_errors = On 看看有什麼訊息

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #2 於: 2009-08-18 09:13 »
PHP訊息表示是權限的問題, 但是我已經將該資料夾開為權限全開777, 為什麼還是不行呢?

他的顯示是:
Warning: fopen(abc.test) [function.fopen]: failed to open stream: Permission denied in /var/www/html/web_new/aaa.php on line 44
fp =
Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/html/web_new/aaa.php on line 46
Warning: fclose(): supplied argument is not a valid stream resource in /var/www/html/web_new/aaa.php on line 48

(p.s : 原來可以用 display_errors = On 看錯誤, 學到了謝謝yamaka)

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #3 於: 2009-08-18 09:22 »
Server OS?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5396
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 利用 fopen 建檔的怪問題
« 回覆 #4 於: 2009-08-18 09:23 »
selinux 的限制?

請改用 <?php, 不要再用 <? 了, 否則可能以後舊程式要自己慢慢改...

web 的路徑可以寫入, 會有很大的安全問題....
最好把這類需要新產生的檔案放到 web 可以存取的路徑之外.
« 上次編輯: 2009-08-18 09:25 由 twu2 »

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #5 於: 2009-08-18 09:35 »
ls -Z 看看web_new目錄跟底下檔案。
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #6 於: 2009-08-18 09:42 »
To micmic3:
Server OS 是 Linux, Fedora 10, Kernel 2.6.27.5-117.fc10.i686

To twu2:
謝謝twu2的建議, 第一次寫網站, 這些意見對我幫助很大 thx
(阿.. 當然雖然改了 <?php 但是還是沒辦法fopen成功, 一樣的錯誤訊息)

To fillano:
ls -Z 的結果, 所有檔案都是的狀況,
-rwxr--r--  root adm_smb unconfined_u:object_r:httpd_sys_content_t:s0 img3.gif
adm_smb 是我創來用來管理samba的帳號,我用Samba來傳檔給Linux.

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #7 於: 2009-08-18 09:53 »
web_new呢?
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #8 於: 2009-08-18 09:58 »
web_new呢?
也一樣
drwxrwxrwx  root adm_smb unconfined_u:object_r:httpd_sys_content_t:s0 web_new

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #9 於: 2009-08-18 11:30 »
我又做了以下測試,雖然仍然不行,但或許有點線索

1. 我將資料夾路徑指到 /tmp/abc.test
    結果是能正確建檔的,位址在 /tmp.
2. 我將 http.conf 內的 User,Group 設定為跟 web_new 資料夾一樣
    仍然建檔失敗.
3. 我將 web_new 的權限設定為 /tmp 一樣
    仍然建檔失敗.

(p.s : apache 不能改以 root 進入,所以沒辦法測試)

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: 利用 fopen 建檔的怪問題
« 回覆 #10 於: 2009-08-18 11:31 »
selinux 關了?...還是開著?
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #11 於: 2009-08-18 11:47 »
權限?你有用chcon改嗎?
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.

id4fox

  • 憂鬱的高中生
  • ***
  • 文章數: 103
  • 40 oz 挑戰成功!
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #12 於: 2009-08-18 12:26 »
原來是SELinux的問題啊~
我天真的以為關閉防火牆等於關閉SELinux而導致至這個錯誤,
我設定SELINUX=disabled重開機就能正確建檔了,
剩下就是確認怎樣設定SELinux可以開放.
謝謝諸位大大熱心的指點與幫忙! thx

(P.S : DEV PHP 能通過SELinux建檔,代表能pass SELinux !? port不同?怪哉)

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: 利用 fopen 建檔的怪問題
« 回覆 #13 於: 2009-08-18 17:03 »
selinux權限分得很細的,dev php我想是透過ssh/sftp上傳吧,這個權限跟httpd的權限當然有很大的不同。
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.