Score:2

สร้าง PHP จากซอร์สด้วยไดรเวอร์ DataDirect ODBC ที่กำหนดเอง แต่ไม่สามารถเริ่มอัตโนมัติด้วย systemd

ธง br

ฉันต้องสร้าง PHP จากซอร์สเพื่อใช้ไดรเวอร์ ODBC ของลูกค้ารายนี้ ฉันได้ติดตามการตรวจสอบเหล่านี้แล้ว: https://www.progress.com/tutorials/odbc/using-php และทุกอย่าง (รวมถึงไดรเวอร์ ODBC) ทำงานได้ดีเมื่อฉันเริ่ม apache ด้วยตนเอง /usr/local/apache2/bin/apachectl start แต่เมื่อฉันพยายามเริ่ม apache ด้วย systemd ไดรเวอร์ ODBC ไม่ทำงานอีกต่อไป

ฉันสร้างไฟล์นี้แล้ว: /usr/lib/systemd/system/httpd.service

[หน่วย]
คำอธิบาย=Apache เว็บเซิร์ฟเวอร์
After=network.target remote-fs.target nss-lookup.target

[บริการ]
ประเภท = ส้อม
PIDFile=/usr/local/apache2/logs/httpd.pid
ExecStart=/usr/local/apache2/bin/apachectl start
ExecStop=/usr/local/apache2/bin/apachectl หยุดอย่างสง่างาม
ExecReload=/usr/local/apache2/bin/apachectl สง่างาม
PrivateTmp=จริง
LimitNOFILE=อินฟินิตี้

[ติดตั้ง]
WantedBy=multi-user.target

ฉันได้รับข้อผิดพลาดต่อไปนี้ในไฟล์ php เมื่อเริ่มต้น apache ด้วย systemd:

odbc_connect(): ข้อผิดพลาด SQL: [DataDirect][ODBC lib] ไม่พบไฟล์ข้อความตัวจัดการไดรเวอร์ โปรดตรวจสอบค่าของ InstallDir ใน odbc.ini., SQL state IM002 ใน SQLConnect

InstallDir ถูกตั้งค่าอย่างถูกต้องในไฟล์ odbc.ini ของฉัน: ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

ฉันไม่ได้รับข้อผิดพลาดนี้เมื่อเริ่มต้น apache ด้วย เริ่มต้น apachectl ด้วยตนเอง ข้อเสนอแนะใด ๆ เกี่ยวกับวิธีการแก้ไขปัญหานี้?

Barry Ralphs avatar
br flag
ฉันได้รับสิ่งนี้ ฉันไม่แน่ใจว่าจะทำอย่างไร: `type=ANOM_ABEND msg=audit(1624733159.706:196): auid=1000 uid=48 gid=48 ses=1 pid=1589 comm="httpd" reason="หน่วยความจำละเมิด" sig=11 type=ANOM_ABEND msg=audit(1624733159.706:197): auid=1000 uid=48 gid=48 ses=1 pid=1591 comm="httpd" reason="หน่วยความจำละเมิด" sig=11 type=SERVICE_START msg=audit(1624733172.056:198): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=httpd comm="systemd" exe="/usr/lib/systemd/systemd" ชื่อโฮสต์=? แอดเดอร์=? ขั้ว=? res=success'`
Michael Hampton avatar
cz flag
นั่นเป็นเพียงความผิดพลาดของ "การแบ่งส่วนผิด" แบบเก่าธรรมดา รหัสนี้อาจไม่น่าเชื่อถือทั้งหมดใช่ไหม
Barry Ralphs avatar
br flag
คุณหมายถึงบิลด์/ซอร์สโค้ดของ Apache หรือโค้ด PHP หรือไม่ โค้ด PHP ทำงานได้ดีเมื่อเริ่มต้น Apache ด้วยตนเอง
Michael Hampton avatar
cz flag
ไม่มีทางรู้ได้ เว้นแต่คุณจะมีคอร์ดัมพ์ที่คุณสามารถวิเคราะห์ได้
ezra-s avatar
ru flag
คุณกำลังรวบรวม odbc สำหรับ PHP ไม่ใช่ Apache มีความแตกต่างอย่างมาก ทำไมคุณไม่ลองดูการกำหนดค่าประเภทใดที่คุณพยายามเริ่ม Apache ในภายหลัง ไม่ว่าในกรณีใด คุณได้ลองเรียกใช้ php ใน php-fpm และใช้ Apache เพื่อร้องขอพร็อกซีโดยไม่พยายามใช้ mod_php หรือไม่ ฉันคิดว่าเพียงอย่างเดียวจะช่วยให้คุณเข้าใจได้ดีขึ้นว่าคุณกำลังพยายามบรรลุอะไรและปัญหาของคุณคืออะไร
Barry Ralphs avatar
br flag
ขอบคุณ @ezra-s ข้อดีคือฉันรวม Apache และ PHP เข้าด้วยกันเสมอคุณช่วยอธิบายให้ชัดเจนหน่อยได้ไหมว่าหมายถึงอะไรโดยการตรวจสอบว่าคุณพยายามเริ่ม Apache ด้วยการกำหนดค่าประเภทใด ฉันจะทำอย่างไร PHPINFO ของฉัน () แสดง: ` './configure' '--with-apxs2=/usr/local/apache2/bin/apxs' '--with-mysqli' '--with-openssl' '--with-bz2 ' '--with-zlib' '--with-zip' '--enable-mbstring' '--enable-ssl' '--คำนำหน้า=/usr/local/php' '--with-custom-odbc= /opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC' `
Michael Hampton avatar
cz flag
อ๊ะ ฉันเพิ่งทำพลาดที่ไม่ได้อ่านลิงก์นั้นเกี่ยวกับไดรเวอร์ ODBC จนถึงตอนนี้ พวกเขาจริงจังหรือไม่? สภาพแวดล้อมที่พวกเขาระบุว่าอายุ 15 ปี! สิ่งนี้ไม่รองรับโดยสิ้นเชิง มีเหตุผลพิเศษบางอย่างที่คุณต้องใช้ไดรเวอร์ ODBC เฉพาะ (และล้าสมัยมานานแล้ว) หรือไม่
Barry Ralphs avatar
br flag
ขอบคุณ @MichaelHampton ฉันไม่ได้ติดตามส่วนที่เกี่ยวกับการสร้าง PHP5.1 ฉันสร้าง 7.4 แทน ลูกค้าของเรากำลังใช้ซอฟต์แวร์บัญชี Deltek Vision ซึ่งโฮสต์อยู่ในระบบคลาวด์ของ Deltek เห็นได้ชัดว่า Deltek รองรับเฉพาะไดรเวอร์ ODBC นี้เพื่ออ่านข้อมูลจากระบบคลาวด์
Michael Hampton avatar
cz flag
นั่นจำกัดตัวเลือกของคุณอย่างแน่นอน ฉันได้ตรวจสอบเพิ่มเติมอีกเล็กน้อยและเห็นได้ชัดว่าเป็นเพียงบทช่วยสอนนั้นมีอายุ 15 ปี ซอฟต์แวร์มีความทันสมัยไม่มากก็น้อย ดังนั้นหลังจากตรวจสอบข้อความนั้นเล็กน้อย ฉันจึงมีข้อสงสัยเกี่ยวกับปัญหานี้ คุณจัดเตรียมตัวแปรสภาพแวดล้อม ODBCINI และ ODBCINST อย่างไร
Barry Ralphs avatar
br flag
ขอบคุณ ฉันสังเกตเห็นสิ่งใหม่ ถ้าฉันรัน `sudo /usr/local/apache2/bin/apachectl` ด้วยตัวเอง ฉันยังคงได้รับข้อผิดพลาดด้านบน แต่ถ้าฉันลอง swatch เพื่อรูทและรัน `/usr/local/apache2/bin/apachectl` ก็ใช้งานได้ดี นี่คือสิ่งที่ทำให้ฉันคิดว่ามันเป็นปัญหาการอนุญาต มีการบอก systemd ให้เริ่ม apachectl ในฐานะรูทหรือไม่?
Barry Ralphs avatar
br flag
Re: ODBCINI และ ODBCINST ฉันมีไฟล์: `/etc/profile.d/odbc.sh` ซึ่งมี: `ODBCINI=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC/odbc.ini ส่งออก ODBCINI ODBCINST=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC/odbcinst.ini ส่งออก ODBCINST` sysytemd ไม่เห็นหรือไม่
Barry Ralphs avatar
br flag
ขอบคุณ @MichaelHampton ฉันสามารถคิดออกตามคำใบ้ของคุณเกี่ยวกับตัวแปรสภาพแวดล้อม
Score:1
ธง br

ฉันสามารถแก้ไขปัญหาได้โดยเพิ่มบรรทัดต่อไปนี้ใน my /usr/lib/systemd/system/httpd.service ไฟล์ ภายใต้ [บริการ] ส่วน:

สภาพแวดล้อม="ODBCINST=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC/odbcinst.ini" สภาพแวดล้อม="ODBC_HOME=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC" สภาพแวดล้อม="ODBCINI=/opt/Progress/DataDirect/Hybrid_Data_Pipeline_for_ODBC/odbc.ini" สภาพแวดล้อม = "TZ = อเมริกา / Los_Angeles"

โพสต์คำตอบ

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