Файл Python не запускается из переполнения стека

У меня есть файл PHP на моем веб-сервере, который должен вызывать скрипт Python (та же папка), который записывает в файл, а затем получает его содержимое и отображает данные.

Файл PHP называется q.php

это содержит

<?php
$tmp = exec("trivia.py");
sleep(4);
$homepage = file_get_contents('./testfile.txt', true);
echo $homepage + '<p>exec ret:' + $tmp;
echo exec("whoami");
?>

Этот файл вызывает trivia.py который записывает файл («./testfile.txt»), а затем php получает данные из файла и отображает их. Я добавил переменную, чтобы увидеть, работает ли exec, и он возвращает 0, Сервер PHP выполняется пользователем http,

сейчас для trivia.py, У меня есть следующая строка в верхней части файла

#!/usr/bin/env python

и он прекрасно работает, когда я SSH на сервер. Из SSH я запускаю скрипт, и он создает файл, указанный выше, и веб-страница работает нормально. Однако, если я использовал файл PHP для его создания, он не будет работать из Интернета.

Я почти уверен, что это как-то связано с разрешениями, но я не настолько хорош в разрешениях для Linux.

ИНФОРМАЦИЯ О СИСТЕМЕ: Synology Diskstation, DSM5, PHP5, Python 2.7

РЕДАКТИРОВАТЬ:

trivia.py В настоящее время 777 разрешений admin владелец и группа users

1

Решение

При запуске файла через exec необходимо указать полный путь к файлу, не имеет значения, находится ли файл в том же каталоге.

Пожалуйста, попробуйте с этим (при условии, что файл находится в / var / www / public)

exec('/var/www/public/trivia.py');
0

Другие решения

Для пользователей Windows —
Проблема была решена здесь PHP Exec Python

Предлагаю заменить $tmp = exec("trivia.py"); для этого

$tmp = exec("C:\\Python27\\python.exe trivia.py");

// Add your python.exe route before the file

Надеюсь, что это работает!!

-1

По вопросам рекламы [email protected]