Cannot convert or composite by php fucntion exec

linux

วันนี้จะมาพูดถึงเรื่องปัญหาเส้นผมบังภูเขาที่ผมไม่คิดว่าจะติดเป็นวันเลยจริงๆ เกี่ยวกับ linux ซึ่งผมนั้นได้มีโอกาสมาใช้ linux ubuntu เนื่องจากชีวิตไม่เคยที่จะได้ command line เลยจึงทำให้น่าสนใจมาก และหลังจากได้เขียนดูก็รู้สึกว่าเรานั้นเท่มากทีเดียวนะฮ๊าฟฟฟฟฟฟ   ( เสียงจอร์นจาก ihere.tv ) เพราะว่าผมมีความรู้สึกว่าใครที่เขียน command line มันดูเท่ไม่ต้องจับเมาส์แต่สั่งการ คอมพิวเตอร์ได้เร็วกว่า คนที่ใช้เม้าส์ซะอีก อ่า… อรัมพบทมายาวเลยคลิกอ่านต่อให้ไวเลยจะได้รู้ว่าปัญหาอะไร อะฮิๆๆๆๆอย่างที่กล่าวไปในข้างต้นว่า และจั่วหัว title อย่างนั้นเพราะว่าผมหาคำตอบไม่เจอ หรือว่าด้วยสกิลการค้นหา google ของผมนั้น ติดลบหรือเปล่าจึงทำให้ไม่สามารถหาคำตอบว่าทำม๊ายยยยยยยย ทำไม มันถึงสั่ง ผ่าน exec ไม่ได้ อ่ะไหนๆก็กริ่นมาแล้วอธิบายซักหน่อย
function exec นั้นคือการสั่งเป็นคำสั่งให้รันโปรแกรมภายนอก ซึ่งหลายๆคนนั้นที่เป็นมือใหม่นั้นยังไม่ได้แตะต้องมากนักเช่นผม : ) แต่เมื่อชะตากรรมลิขิตให้เราแล้วนั้นไซร์ก็จงอย่ากลัวที่จะเรียนรู้มันซะ ถ้าคุณเป็นคนที่เคยเขียน command line มาก่อนแล้วนั้นเรื่องนี้อาจจะหมู อู๊ดๆ เลยก็เป็นได้ ตัวอย่างไม่จัดให้หรอก เพราะไม่ได้เขียน how to นะจ๊ะจะมาอธิบายปัญหาที่ติดจ๊ะ อ่ะฮิๆๆๆ  #petdo ไหมล่ะ

แล้วเจ้า exec มันมาเกี่ยวอะไรกับปัญหานี้  คืออย่างนี้ครับผมต้องการใช้คำสั่ง convert และ composite ซึ่งสองตัวนี้เป็น command ใน linux ซึ่งสั่งโปรแกรม imagemagick อยากรู้จัดเต็มที่คลิก ทีนี้นั้น ถ้าปกติเราๆท่านๆที่ใช้งานก็สั่งผ่าน ternimal ( ฮู้ววววว อย่างหล่อ ! ) แต่ทีนี้้ต้องการให้หล่อกว่านั้นคือ user ที่เข้าเว็บเราสามารถ upload รูปภาพแล้วเราทำการตัด จัด วาง  crop หรือย่อขยาย โดยภาพไม่แตกและลดขนาด เราอาจจะจำเป็นต้องใช้เจ้าสิ่งนี้ ซึ่งโปรเจ็คของผมนั้นต้องการ resize รูปถ้ารูปมันใหญ่ก็จัดให้มันเล็กลงหน่อยก็เท่านั้น

แต่ปัญหาที่เจอมันไม่เท่านั้นคือ ผมสามารถรันผ่าน terminal ได้อย่างหล่อมาก แต่ดันรันใช้ php ไฟล์ไม่ออกอะไรมาเลย ซึ่งความซวยมันอยู่ตรงนี้แหละ รันไงก็ไม่มีรูปออกมาติดเป็นวันหาวิธีแก้ต่างๆนาๆ ตอนแรกเข้าใจว่าคำสั่งพลาดแต่ก็ไม่พลาดเพราะลองเอาคำสั่งเดียวกันไปใส่ที่ terminal ก็รันผ่าน อ้าวเฮ้ย ! ยังไงรันนู้นผ่านแต่นี่ไม่ผ่าน ก็คิดต่อว่าสงสัยมันต้อง set chmod ที่ไฟล์ php ซึ่งก็ยังไม่ได้อยู่ดี เลยคิดไปว่าสงสัย เราคงเรียก path ของตัว convert ไม่ถูกลองทุกอย่างเท่าที่คิดได้จนในที่สุด…ก็ไม่ได้อยู่ดี = =’

และแล้ว… ผมก็ต้องใช้ตัวช่วยคือ เจ้านายผมเอง เขามาบอกว่าเนี้ยคุณลองเช็คจาก error log ของ apache สิว่ามันฟ้องไรบ้าง ไอ้เราก็งงสิ ยังไม่เคยใช้เจ้านายเลยจัดเต็มทำให้ดูเราต้องไปดูที่ไฟล์ default ซึ่งมันอยู่ที่ etc/apache2/sites-available ซึ่งในนี้จะพบไฟล์ default ให้เราเปิดไฟล์ด้วยคำสั่ง sudo gedit default เสร็จแล้วก็ดูว่ามันเก็บ log error ไว้ที่ไหนแล้วจัดการ copy ไปใส่ในคำสั่งนี้คือ sudo tail -f ตาม path ที่เก็บไฟล์ error log แล้วผมก็พบกับคำตอบที่ทำให้ผมเซง…คือ เมื่อผมรัน exec จากไฟล์เพื่อทำการ resize รูปนั้น folder ที่เก็บรูปมันดันติด permission เซงเลยครับถ้าอ่านมาแล้วไม่เข้าใจผมจะอธิบายง่ายๆคืออย่างนี้ครับ

ผมทำการสั่งให้ resize จากที่คุณๆ upload มานั่นแหละเสร็จแล้วเอาไปเก็บที่ folder ชื่อ image_uploads แต่เจ้า folder เจ้ากรรมตัวนี้มันดั๊นนนนนน ติดค่า permission จึงไม่สามารถทำการเขียนไฟล์ที่ เป็นรูปภาพที่เราทำการ resize แล้วนั้นลงไปได้แค่นั้น !!!

ดังนั้นจึงเป็นแรงบันดาลใจว่าผมควรมาเขียนเตือนตัวผมเองและคนที่พลาดแบบผมด้วยครับหวังว่าที่อ่านมาจะได้สาระไม่มากก็น้อย แต่คิดว่าน่าจะเป็นอย่างหลังนะ = =’

ปล. ทำตั้งนานเจ้านายมาที ตอบโจทย์ เลยเหอะๆ

ถ้าคุณชอบบทความในเว็บนี้ และอยากสนับสนุนเรา เพียงแค่คุณสมัครรับข่าวสารด้านล่างจะได้รับสิทธิ์พิเศษก่อนใคร เราสัญญาว่าจะส่งบทความที่เป็นประโยชน์ต่อคุณอย่างแน่นอนครับ

Loading

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Message us

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ปฎิเสธทั้งหมด
Manage Consent Preferences
  • คุกกี้ที่จำเป็น
    Always Active

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

  • คุกกี้ที่จำเป็น

    คุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้

บันทึก