Estoy ejecutando un comando de shell desde php usando lo siguiente:
if($dig!=""){
$command = escapeshellcmd('python3 '. dirname(__file__). '/create_pdf.py digital '.$inv);
}else{
$command = escapeshellcmd('python3 '. dirname(__file__). '/create_pdf.py hmml'.$inv);
}
Esto es lo que se encuentra en create_pdf.py
#!/usr/bin/env python3
import os
import glob
from fpdf import FPDF
from PIL import Image
import time
import sys
from PyPDF2 import PdfFileMerger
from PyPDF2 import PdfFileReader
imagetype = sys.argv[1:][0]
pdf_id = sys.argv[1:][1]
#path containing images - to change to mnt
if imagetype == 'digital':
root="/mnt/../Digital/"
rootPDF = '/home/../public_html/wp-content/uploads/Scans/Digital/'
else:
root="/mnt/../VHMML/"
rootPDF = '/home/../public_html/wp-content/uploads/Scans/VHMML/'
for i in os.listdir(root):
if pdf_id in i:
files = i
imageList = sorted(glob.glob(root+files+'/*.jpg')+sorted(glob.glob(root+files+'/*.JPG')))
pdf = glob.glob(root+"*/"+"*.pdf")
name = root.split(" ")[0]
#path where pdfs are to be stored
namePath = rootPDF+pdf_id+".pdf"
noImages = len(imageList)
factorL = 0.25
factorP = 0.5
im_list = []
start = time.time()
with open('debug.txt', 'a') as f:
f.write(imagetype)
f.write(pdf_id)
f.write(str(noImages))
De alguna manera, el archivo de depuración se escribe cuando ejecuto el script de python desde la línea de comandos pero no desde php. ¿Alguna idea de por qué, por favor? El código php se encuentra en functions.php de wordpress.
El registro de errores de Apache muestra:
(32)Broken pipe: [client] mod_fcgid: ap_pass_brigade failed in handle_request_ipc function
.