Openshift MySQL Environment vars ไม่ทำงานใน PHP

ดูเหมือนว่าฉันจะใช้งาน MySQL Vars สำหรับ Openshift ในแอปพลิเคชัน PHP ของฉันไม่ได้ ฉันสร้างไฟล์ test.php เพื่อพยายามไปที่ด้านล่างของไฟล์

test.php

<?php
define( "DB_SERVER", getenv('OPENSHIFT_MYSQL_DB_HOST'));
echo "Host1 define: ".DB_SERVER;
echo "<br>Host2 getenv: ". getenv('OPENSHIFT_MYSQL_DB_HOST');
echo "<br>Host3 _env: ". $_ENV['OPENSHIFT_MYSQL_DB_HOST'];
echo "<br>Host4 _server: ". $_SERVER['OPENSHIFT_MYSQL_DB_HOST'];
echo "<br>Openshift App Name: ". $_ENV['OPENSHIFT_APP_NAME'];
?>

เอาต์พุตในเบราว์เซอร์:

Host1 กำหนด:
Host2 getenv:
Host3 _env:
Host4 _server:
ชื่อแอป Openshift: เว็บ

ฉันเพิ่มในชื่อแอป Openshift Var เพื่อแสดงว่า Openshift Vars บางตัวใช้งานได้จริง แต่ MySQL ไม่ได้ด้วยเหตุผลบางประการ

เวอร์ชัน PHP คาร์ทริดจ์: 5.4 เวอร์ชัน MySQL: 5.5

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

หมายเหตุ:

การรัน echo $OPENSHIFT_MYSQL_DB_HOST ในคอนโซล Openshift SSH จะให้ที่อยู่ IP สำหรับโฮสต์แก่ฉัน ฉันได้ลองรีสตาร์ทคาร์ทริดจ์จากหน้าผู้ดูแลระบบ Openshift แล้ว แต่ก็ไม่มีโชค

ฉันยินดีอย่างยิ่งที่จะให้ข้อมูลเพิ่มเติม ฉันกระตือรือร้นที่จะเขียนคำถาม SO ที่ชัดเจน


person redfox05    schedule 09.12.2015    source แหล่งที่มา


คำตอบ (1)


ในที่สุดก็เจอ! กด git เพื่อทริกเกอร์ mysql vars ให้ทำงาน

สร้างไฟล์จำลองในไดเร็กทอรี git ของคุณ (ตัวอย่างด้านล่างสำหรับ linux) คอมมิต จากนั้นกด:

touch test
git add test
git commit -m "Test file for triggering git push deploy process"
git push

อย่าลืมลบไฟล์ทดสอบในการคอมมิตครั้งถัดไป

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

ฉันพบคำตอบที่นี่ (https://stackoverflow.com/a/26898911/339803) ที่แนะนำให้กดไปที่ git อย่างน้อยหนึ่งครั้ง แต่ฉันไม่ได้ลองเพราะฉันได้กด git เพื่อเปลี่ยนไฟล์กำหนดค่า PHP DB จากค่าคงที่เป็นค่า $_ENV ดังนั้นฉันจึงคิดว่าการทำอีกครั้งจะไม่ช่วยอะไร

อย่างไรก็ตาม ทันทีที่ฉันสร้างไฟล์ทดสอบและกดไปที่ git ตัวแปร mysql ก็ทำงานได้

person redfox05    schedule 09.12.2015
comment
อัปเดต: ฉันรู้ว่าฉันไม่เคยทำอะไรเลยหลังจากเปลี่ยน MYSQL vars เป็น ENV เนื่องจากฉันได้เปลี่ยน vars จากแบบคงที่เป็นไดนามิกโดยใช้ SSH เพื่อไปที่ไดเร็กทอรี Openshift Data ดังนั้นการกดครั้งที่ 2 ทำให้ทุกอย่างสำเร็จ ทั้งที่จริงๆ แล้วเป็นการกดครั้งที่ 1 (การตั้งค่า DB อยู่ใน CMS (concrete5) และต้องอยู่ในไดเร็กทอรีถาวร นอก git) เนื่องจาก Concrete5 ชอบจัดการการตั้งค่าเหล่านี้ผ่าน CMS ของมัน ฉันไม่สามารถใช้ CMS ได้เนื่องจากตัวแปร $_ENV จะถูกใส่เครื่องหมายคำพูด ดังนั้นฉันจึงต้องทิ้งการกำหนดค่าไว้ใน dir ถาวร และแก้ไขที่นั่นโดยใช้บรรทัดคำสั่ง - person redfox05; 09.12.2015
comment
สิ่งนี้ได้ผลสำหรับฉัน! แม้ว่าฉันจะรีสตาร์ทอุปกรณ์ด้วยตนเอง แต่ PHP ก็ไม่รับ vars จนกว่าฉันจะกด Git อีกครั้ง - person sean.boyer; 01.12.2016