2015-02-15 4 views
-1

Я пытаюсь выполнить скрипт python при щелчке изображения, но всякий раз, когда скрипт python получает вызов, он всегда выдает 500 Internal Server Error? Вот текст из журнала500 Внутренняя ошибка сервера при выполнении .py

[Sun Feb 15 20:31:04 2015] [error] (2)No such file or directory: exec of '/var/www/forward.py' failed 
[Sun Feb 15 20:31:04 2015] [error] [client 192.168.15.51] Premature end of script headers: forward.py, referer: http://192.168.15.76/Testing.html 

Я не понимаю, почему он говорит Premature end of script header? Я могу выполнить базовый скрипт python, который просто печатает заголовок или текст html. Файл, который я пытаюсь выполнить, имеет некоторый базовый код wiringPi, который отлично выполняет команду sudo python forward.py?

EDIT

Это сценарий, я пытаюсь выполнить:

#!/usr/bin/python 

import time 

import wiringpi2 as wiringpi 

wiringpi.wiringPiSetupPhys() 

wiringpi.pinMode(40, 1) 

wiringpi.digitalWrite(40, 1) 

time.sleep(2) 

wiringpi.digitalWrite(40, 0) 

wiringpi.pinMode(40, 0) 
+1

Может быть, вы должны показать сценарий? –

ответ

2

Вещи, чтобы проверить:

  1. Убедитесь, что скрипт исполняемым (chmod +x forward.py) и что это имеет линию привязки (например, #!/usr/bin/env python).

  2. Убедитесь, что группа сценариев & соответствует совпадению с тем, с каким пользователем работает apache.

  3. Попробуйте запустить сценарий из командной строки в качестве пользователя apache. Я вижу, что вы тестируете его с помощью sudo. Нужно ли это sudo? Если так, какой бы пользователь не работал, поскольку apache также нуждался бы в доступе sudoers.

  4. Поскольку вы используете CGI, попробуйте добавить: import cgitb; cgitb.enable(); в начало вашего скрипта. Это поймает любые исключения и вернет его в качестве ответа, вместо того, чтобы заставить скрипт умереть.

+0

Я подтвердил, что файл действительно выполним, и у меня есть строка кода #!/Usr/bin/env python в начале моего скрипта. Я изменил владельца и группу файлов в соответствии с пользователем и группой, в которой работает apache, и я также подтвердил, что пользователь может запустить файл из командной строки. После всего этого сервер все еще возвращает ошибку внутреннего внутреннего сервера –

+0

Хорошо, я добавил еще один шаг. Проверьте это. Если вы можете использовать другие скрипты python для работы, но вы по-прежнему не можете получить точную ошибку из этого сценария, попробуйте сократить программу до просто инструкции, которая заставляет ее умереть. Например. оператор импорта или одна из этих функций wirepi и т. д. –

+0

Я попытаюсь прокомментировать определенные разделы, пока я не смогу заставить его фактически скомпилировать. Я попробовал ваше предложение импорта cgit, но безрезультатно. Я прокомментирую ответ после того, как попробую прокомментировать. –

0

В дополнение к рекомендациям @ выплавляемым теории, я бы также проверить, чтобы убедиться:

  • У вас есть разрешение на выполнение на сценарий.
  • У Apache есть разрешение на доступ к папке/файлу скрипта. Например:

    <Directory /path/to/your/dir> 
        <Files *> 
        Order allow,deny 
        Allow from all 
        Require all granted 
        </Files> 
    </Directory> 
    
+0

У меня есть, что добавлено в файл 000-default, и я также установил файл .httdaccess, чтобы гарантировать, что веб-сервер может выполнять файлы .py. Кроме того, я запускал другие скрипты python с веб-страницы в том же каталоге, что и текущий файл, что меня озадачивает? –

Смежные вопросы