พอดีวันก่อนอัพเกรด PHP จาก 5.3.24 เป็น 5.3.25 ทุกเครื่องไม่มีปัญหา
แต่มีอยู่เครื่องนึง PHPMyAdmin เกิดปัญหาขึ้น Rebuild แล้วก็ไม่หาย มันขึ้นแบบนี้ครับ
พอเรียกใช้ PHPMyAdmin ไม่ว่าจะเรียกจาก IP http://122.144.155.xx/phpmyadmin
หรือ http//www.domain.com/phpmyadmin ก็เจอปัญหาเหมือนกันคือ
[COLOR=#ff0000][B]Fatal error[/B]: session_start() [<a href=‘function.session-start’>function.session-start</a>]: Failed to initialize storage module: files (path: ) in [/COLOR][B][COLOR=#ff0000]/var/www/html/phpMyAdmin-4.0.3-all-languages/libraries/session.inc.php on line [/COLOR][B][COLOR=#ff0000]83[/COLOR]
[/B][/B]นั่งหาข้อมูลจนตาแฉะแล้วครับ ยังไม่เจอวิธีแก้ปัญหาเลยครับ
ข้อมูลเบื้องต้น
Cent OS 6.4
Apache 2.2.24
MySQL 5.5.14
Php 5.3.25
รบกวนด้วยครับ
icez
June 6, 2013, 11:29am
2
php.ini check ค่า session.save_path ดีๆ ครับ
; The path can be defined as:
;
[COLOR=#0000FF]; session.save_path = “N;/path”[/COLOR]
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
[COLOR=#0000FF]; session.save_path = “N;MODE;/path”[/COLOR]
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process’s umask.
; http://php.net/session.save-path
[COLOR=#0000FF]; session.save_path = “/tmp”
[/COLOR][COLOR=#000000]สองเครื่อง ค่าเหมือนกันเป๊ะเลยครับ แต่เครื่องนึงใช้ได้ เครื่องนึง ใช้ไม่ได้ครับ[/COLOR][COLOR=#0000FF]
[/COLOR]
icez
June 6, 2013, 12:11pm
4
มันมี ; นำหน้าแสดงว่าไม่มีผลสิครับ
เอา ; ออก แล้ว fix เป็น /tmp เลยครับ
[COLOR=#0000ff]; session.save_path = “N;/path”
; session.save_path = "N;MODE;/[COLOR=#0000ff]path[/COLOR]
[/COLOR]แก้เป็น[COLOR=#0000ff]
[COLOR=#0000ff] session.save_path = "N;/tmp"
session.save_path = “N;MODE;/tmp”
[/COLOR][/COLOR]ถูกต้องไหมครับ แล้วก็ restart apache
ถ้าถูกต้องแล้ว อาการยังเหมือนเดิมครับ[COLOR=#0000ff][COLOR=#0000ff][/COLOR][/COLOR]
kke
June 6, 2013, 12:40pm
7
[COLOR=#0000ff]; session.save_path = “N;/path”
; session.save_path = "N;MODE;/path
[/COLOR]แก้เป็น[COLOR=#0000ff]
[COLOR=#0000ff] session.save_path = “N;/tmp”
session.save_path = “N;MODE;/tmp”
[/COLOR][/COLOR]ถูกต้องไหมครับ แล้วก็ restart apache
ถ้าถูกต้องแล้ว อาการยังเหมือนเดิมครับ
ใช้ storage เหรอครับ ถึงใส่ N;PATH;
ใส่แค่ /tmp พอครับ แล้วก็แค่บรรทัดเดียวพอ ตัวอย่างเขามีให้ดูหลายๆแบบ มันเลยมีหลายบรรทัด
แต่ผมว่าตรงนี้ไม่น่าเกี่ยว มันน่าจะใช้ /tmp เป็น default เองอยู่แล้ว
ลองเช็ค code บรรทัด 83 ที่มันบอก error ว่ามี code อะไร ไม่ก็ลองลบ phpmyadmin แล้วลงใหม่เลย
กับเช็ค permission ของ /tmp ดูว่าเป็น 1777 หรือเปล่า
แล้วมีการสร้าง partition /tmp แยกหรือเปล่า มัน mount แล้วหรือยัง ที่ mount ไว้มันอาจจะหลุด ก็เลย permission เปลี่ยน
icez
June 6, 2013, 1:22pm
8
[COLOR=#0000FF]; session.save_path = “/tmp”[/COLOR]
เอา ; ตรงนี้ออกพอแล้วครับ
ผมว่าทำเรื่อง session save path ก่อนค่อยไปดูที่เหลือดีกว่านะ… อาการมันบอกว่าค่า default ของ session save path เป็นค่าว่างไม่ใช่ /tmp
kke:
ใช้ storage เหรอครับ ถึงใส่ N;PATH;
ใส่แค่ /tmp พอครับ แล้วก็แค่บรรทัดเดียวพอ ตัวอย่างเขามีให้ดูหลายๆแบบ มันเลยมีหลายบรรทัด
แต่ผมว่าตรงนี้ไม่น่าเกี่ยว มันน่าจะใช้ /tmp เป็น default เองอยู่แล้ว
ลองเช็ค code บรรทัด 83 ที่มันบอก error ว่ามี code อะไร ไม่ก็ลองลบ phpmyadmin แล้วลงใหม่เลย
กับเช็ค permission ของ /tmp ดูว่าเป็น 1777 หรือเปล่า
แล้วมีการสร้าง partition /tmp แยกหรือเปล่า มัน mount แล้วหรือยัง ที่ mount ไว้มันอาจจะหลุด ก็เลย permission เปลี่ยน
ผมแยก /tmp ครับ ตอนนี้ /tmp ก็ยังใช้ได้เป็นปกติครับ แล้วก็ลองลบและติดตั้ง phpmyadmin หลายครั้งแล้ว ทั้ง 3.5.x และ 4.0.x ก็ยังอาการเดิมครับ
icez:
; session.save_path = “/tmp”
เอา ; ตรงนี้ออกพอแล้วครับ
ผมว่าทำเรื่อง session save path ก่อนค่อยไปดูที่เหลือดีกว่านะ… อาการมันบอกว่าค่า default ของ session save path เป็นค่าว่างไม่ใช่ /tmp
ทำแล้วครับ restart apache แล้ว ก็ขึ้น error เหมือนเดิมครับ
ที่งงก็คือ เครื่องอื่น ค่าเหมือนกัน แต่ทำงานได้ปกติ แต่เครื่องนี้ เป็นอยู่เครื่องเดียวครับ
kke
June 6, 2013, 5:42pm
11
ลองสร้าง phpinfo ใส่ใน /var/www/html/phpMyAdmin/ แล้วเรียกดู
ว่ามันโหลด php.ini ที่ path ใหน แล้วมันแสดงค่า session.save.path ไปที่ /tmp ตามที่แราแก้หรือยัง
ถ้ายังไม่เป็น /tmp ก็ต้องหาว่าเพราะอะไร บางทีใน php.ini อาจจะมีกำหนดค่าไว้ซ้ำหลายที่ มันไปใช้ค่าที่อยู่ล่างสุด
หรืออีกกรณีอาจจะโดนกำหนดอยู่ใน .htaccess ใน /var/ww/html หรือใน phpMyadmin ก็ได้
ปล. เปิดดู code phpmyadmin แล้ว ส่วนมากสั่ง ini_set ลองดูใน disable_function ว่าไป disable ini_set ไว้หรือเปล่า
[COLOR=#0000FF][B]session.save_path = no value[/B][/COLOR]
ผมลอง phpinfo แล้วครับ ค่ามันยังเป็น no value อยู่เลยครับ ทั้งที่ php ที่ /usr/local/lib/php.ini ก็แก้ session.save_path = “/tmp” เรียบร้อยแล้ว
ทั้ง restart Apache และ restart เครื่องแล้วก็ตาม ก็ยังขึ้นเหมือนเดิม ลองไล่หา .htaccess ในตำแหน่งต่างๆ ก็ไม่มีครับ (ไม่มีไฟล์ .htaccess)
ส่วนใน php.ini ก็มีค่า [COLOR=#0000FF][B]session.save_path [/B][/COLOR]แค่คำแหน่งเดียวครับ ไม่มีที่อื่น บรรทัดอื่น ที่ซ้ำกันครับ
ส่วน disable ini_set อันนี้ผมก็ไม่ได้ Disable ไว้ครับ
ขอบคุณมากครับ สำหรับน้ำใน ในการช่วยเหลือครับ :875328cc:
icez
June 7, 2013, 10:29am
16
session.save_path = no value
ผมลอง phpinfo แล้วครับ ค่ามันยังเป็น no value อยู่เลยครับ ทั้งที่ php ที่ /usr/local/lib/php.ini ก็แก้ session.save_path = “/tmp” เรียบร้อยแล้ว
ทั้ง restart Apache และ restart เครื่องแล้วก็ตาม ก็ยังขึ้นเหมือนเดิม ลองไล่หา .htaccess ในตำแหน่งต่างๆ ก็ไม่มีครับ (ไม่มีไฟล์ .htaccess)
ส่วนใน php.ini ก็มีค่า session.save_path แค่คำแหน่งเดียวครับ ไม่มีที่อื่น บรรทัดอื่น ที่ซ้ำกันครับ
ส่วน disable ini_set อันนี้ผมก็ไม่ได้ Disable ไว้ครับ
ด้านบนๆ มันจะมีบอกว่าอ่าน php.ini จาก path ไหนอยู่ครับ ลองดูด้วย
ลองใช้ htaccess ดูนะครับ เอาของเมืองนอกเขามาอ้างอีกที http://www.techheadz.co.uk/205.html#.UbFe2lFj5fM
จากตรงนี้ครับ /usr/local/lib/php.ini
icez
June 7, 2013, 11:34am
19
php -c /usr/local/lib/php.ini -i | grep session.save_path
ได้ผลดังนี้ครับ คือมันแจ้งว่ายังไม่ได้กำหนดค่า
PHP: syntax error, unexpected ‘"’ in /usr/local/lib/php.ini on line 185
session.save_path => no value => no value
ค่าก็ใส่แล้วนะครับ session.save_path = “/tmp”
บรรทัด 185 ก็คือ
url_rewriter.tags
[B][COLOR=#0000CD] Default Value: “a=href,area=href,frame=src,form=,fieldset=”[/COLOR][/B]
Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry"
Production Value: “a=href,area=href,frame=src,input=src,form=fakeentry”