ฉันมีคำสั่งต่อไปนี้ในไฟล์ apache2_site.conf ของฉัน:
CustomLog "|/home/me/myjlog.py %h \"%r\"" ทั่วไป
ซึ่งควรสร้างบันทึกในเซิร์ฟเวอร์ MySQL ของฉัน myjlog.py
เริ่มต้นด้วย:
#!/usr/bin/python3
นำเข้า pymysql
นำเข้าระบบ
ip=sys.argv[1]
req=sys.argv[2]
...
อย่างไรก็ตาม สำหรับแต่ละคำขอไปยังไซต์ของฉัน การเข้าสู่ระบบในฐานข้อมูลของฉันยังไม่เสร็จสิ้น
สิ่งที่ปรากฏใน /var/log/apache2/error.log
เป็น:
AH00106: โปรแกรมบันทึกแบบไพพ์ '/home/me/myjlog.py %h "%r"' ล้มเหลวโดยไม่คาดคิด
Traceback (การโทรครั้งล่าสุดล่าสุด):
ไฟล์ "/home/alibaba/myjlog.py" บรรทัดที่ 2 ใน <โมดูล>
นำเข้า pymysql
ModuleNotFoundError: ไม่มีโมดูลชื่อ 'pymysql'
ดูเหมือนว่า python จะไม่รู้จักโมดูล pymysql
. อย่างไรก็ตามโมดูลนี้ได้รับการติดตั้งสำหรับผู้ใช้ ฉัน
และ ราก
...
ฉันจะรับประกันการเข้าถึงได้อย่างไร pymysql
ถึง อาปาเช่2
?
แก้ไข:
1 - ฉันไม่ได้ใช้สภาพแวดล้อมเสมือนจริงบนเซิร์ฟเวอร์นี้
2 - หลังจากตั้งค่า chmod -R g+rx /home/me/.local
และ chmod -R a+rx /home/me/.local
, ฉันวิ่ง sudo -u เว็บไซต์ www-data python3 -m
และได้รับ:
sys.path = [
'/บ้าน/ฉัน',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'/home/me/.local/lib/python3.6/site-packages',
'/usr/local/lib/python3.6/dist-packages',
'/usr/lib/python3/dist-packages',
]
USER_BASE: '/home/me/.local' (มีอยู่)
USER_SITE: '/home/me/.local/lib/python3.6/site-packages' (มีอยู่)
ENABLE_USER_SITE: จริง
แต่ก็ยังเป็น บันทึกที่กำหนดเอง
คำสั่งไม่สามารถเข้าถึงได้ pymysql
.