ทำไมเว็บแอปพลิเคชันสาธารณะไม่ใช้ไฟล์ ini สำหรับการกำหนดค่า


10

CMS สาธารณะเกือบทุกตัวในนั้นใช้ไฟล์. php สำหรับการตั้งค่าฐานข้อมูลและอื่น ๆ ตัวอย่างเช่น WordPress สร้างไฟล์. php config โดยอัตโนมัติเมื่อคุณติดตั้ง

ทำไมพวกเขาไม่เพียงแค่ใช้ไฟล์. ini PHP มีparse_ini_file ()อยู่แล้วและฉันแน่ใจว่าภาษาอื่นมีฟังก์ชั่นที่คล้ายกัน

คำตอบ:


9

ด้วย PHP โดยเฉพาะ; ความแตกต่างระหว่างไฟล์. ini และไฟล์. conf.php นั้นเล็กน้อย

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

เมื่อเทียบกับที่; ไฟล์ ini ไม่มีประโยชน์อะไรเลย และinclude, requireและrequire_onceทุกคนรู้จักกันดีและ (ส่วนใหญ่) ที่เข้าใจกันดี


relate to one well-defined, portable syntax for configurationฉันไม่เข้าใจ ไฟล์ ini มีไวยากรณ์ที่กำหนดและพกพาได้เป็นอย่างดี ทุก.conf.phpไฟล์มีโครงสร้างของตัวเองส่วนใหญ่จะเป็นอาเรย์ แต่ก็ไม่แตกต่างจากไฟล์ ini
yannis

7
โปรดทราบว่าไฟล์ PHP สามารถให้ความปลอดภัยขั้นพื้นฐานได้ หาก Joomla ใช้ XML หรือ.iniไฟล์สำหรับการจัดเก็บการตั้งค่าก็ไม่ต้องสงสัยเลยว่ามีอินสแตนซ์ที่กำหนดค่าผิดพลาดจำนวนมากกำลังทำงานอยู่ซึ่งการกำหนดค่านั้นสามารถเข้าถึงได้แบบสาธารณะซึ่งโดยปกติจะไม่ดี ด้วยไฟล์ PHP มันจะเป็นเรื่องยากมากที่เซิร์ฟเวอร์จะได้รับการกำหนดค่าผิดพลาดเพื่อให้บริการเนื้อหาแก่ผู้เข้าชม
Tom Marthenal

4

โดยทั่วไปฉันต้องการ.iniหรือไฟล์การกำหนดค่า XML ในระบบที่มีขนาดใหญ่ขึ้นบ่อยครั้งที่คนอื่นที่ไม่ใช่นักพัฒนาจะต้องเปลี่ยนค่าการกำหนดค่าอาจเป็น DBA หรือดูแลระบบ DBAs และ sysadmins ส่วนใหญ่ฉันรู้ว่าไม่มีปัญหาในการนำทางผ่านสคริปต์ PHP แบบง่าย ๆ แต่ฉันต้องการถ้าพวกเขาไม่ได้ ข้อผิดพลาดเล็ก ๆ น้อย ๆ อย่างหนึ่งในนั้นอาจเป็นอันตรายต่อแอปพลิเคชันทั้งหมดในบางวิธี

แต่ในระบบขนาดเล็กมันสะดวกมากที่จะใช้สคริปต์ PHP สำหรับการกำหนดค่า ฉันเล่นกับAWS SDKวันนี้ซึ่งใช้สคริปต์ PHP สำหรับการกำหนดค่า:

CFCredentials::set(array(
    'development' => array(
        'key' => 'xxx',
        'secret' => 'xxxx',
        'default_cache_config' => sys_get_temp_dir(),
        'certificate_authority' => true
    ),
    '@default' => 'development'
));    

แทนที่จะเป็นฮาร์ดโค้ด a default_cache_configฉันกำลังส่ง temp ของระบบและนั่นจะใช้ได้กับทุกระบบที่ฉันปรับใช้สคริปต์ สคริปต์นี้เป็นข้อพิสูจน์แนวคิดเล็ก ๆ ที่จะส่งผ่านนักพัฒนาประมาณ 10 คนและฉันต้องการให้พวกเขาทำงานเหมือนเดิมโดยไม่ต้องคิดมาก ถ้าต้นแบบวิวัฒนาการขึ้นมาฉันจะทำการ hardwire กับคลาสการกำหนดค่า XML ของฉัน (และแน่นอนว่าจะไม่พึ่งพาแคชของระบบไฟล์)


"ข้อผิดพลาดเล็ก ๆ น้อย ๆ ในนั้นอาจเป็นอันตรายต่อแอปพลิเคชันทั้งหมดในบางวิธี ราวกับว่าค่าที่ไม่ถูกต้องสำหรับ ini จะไม่? หรือว่า XML นั้นเป็นมิตรกว่ากัน?
whatsisname

@whatsisname โดยทั่วไปหากค่าการตั้งค่าที่ไม่ถูกต้องเบรกระบบของคุณแล้วปัญหาของคุณอยู่ที่อื่น ฉันกำลังคิดถึงโค้ดที่ไม่ตั้งใจในการกำหนดค่าสคริปต์ที่ทำบางสิ่งบางอย่างสุดขีดซึ่งเป็นสิ่งที่ฉันมีประสบการณ์มากกว่าหนึ่งครั้ง ไม่สามารถทำได้ด้วยไฟล์ ini / xml จุดสำคัญคือการกำหนดค่าสคริปต์ไม่ใช่สิ่งที่คุณต้องการแบ่งปันกับผู้พัฒนาที่ไม่ใช่
yannis

3

คำตอบนั้นง่าย: conf.php นั้นจำเป็นต้องมีการทำงานเป็นศูนย์ มันเป็นแค่ไฟล์ต้นฉบับอื่น


0

ความเร็วที่ไม่มีการแคชก็เป็นเหตุผลได้เช่นกัน การกำหนดค่า PHP สามารถ opcode- แคชโปร่งใสถ้าจำเป็น ในขณะที่ไฟล์ INI จะต้องมีการแยกวิเคราะห์ข้อความทุกครั้งที่อ่านและคุณต้องสร้างแคชด้วยตัวเอง สำหรับไฟล์ขนาดเล็กมันก็โอเค แต่มีการแยกวิเคราะห์หลายร้อยบรรทัดในทุกคำขอมันสามารถเพิ่มเป็นสิบล้านวินาทีซึ่งค่อนข้างมากสำหรับเว็บที่ปรับปรุงประสิทธิภาพ 200 มิลลิวินาที

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.