PHP-скрипт работает на локальном хосте, но имеет внутреннюю ошибку сервера 500 на сервере

Я пытаюсь реализовать библиотеку simple-linkedinphp (она находится по адресу http://code.google.com/p/simple-linkedinphp/)

Он отлично работает на локальном хосте, но когда я загружаю его на сервер, я получаю 500 Internal Server Error. Вот что пишет журнал ошибок:

[12-Feb-2012 20:35:09] Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный T_STRING в /home1/bangaban/public_html/LIAPIwrappertest/linkedin_3.1.1.class.php в строке 1

Это не помогает, потому что строка 1 — это просто открывающий тег <?php, а затем несколько комментариев.

Для библиотеки требуется PHP 5+ и расширение cURL на сервере, и phpinfo() показывает, что это необходимо установить. Я не думаю, что в скрипте есть синтаксические ошибки, потому что он отлично работает на локальном хосте, и это библиотека, которую используют многие люди.

Я погуглил и нашел несколько ресурсов, в которых говорится о 500 ошибках, вызванных доступом для записи; этот вопрос немного говорит об этом, но это другое сообщение об ошибке , поэтому я не уверен, как это применимо к этому случаю.

Похоже, это что-то на стороне сервера, возможно, что-то в файле php.ini? Или, может быть, файл .htaccess? У меня никогда раньше не было этой проблемы с библиотеками или php-скриптами, когда я заставлял их работать на локальном хосте, поэтому для меня это действительно странно.

РЕДАКТИРОВАТЬ/ОБНОВИТЬ:

Я изменил права доступа к файлам с 644 на 755, но это ничего не дало.

Я изменил demo.php, чтобы загрузить тестовый файл вместо linkedin_3.1.1.class.php, и это сработало нормально, поэтому он определенно не анализирует только НЕКОТОРЫЕ файлы. Затем я решил попробовать некоторые из более ранних версий той же библиотеки. Версия 3.1.0 анализирует и работает без ошибок. Версия 3.2.0 не выполняет синтаксический анализ, хотя ошибка синтаксического анализа отличается от версии 3.1.1. Это странно, потому что количество загрузок для версии 3.2.0 составляет 752, так как же это могло не работать у меня, если оно работало у сотен других людей?

В любом случае, я пока поработаю с v3.1.0 и посмотрю, сможет ли кто-нибудь разгадать тайну, почему все версии после v3.0.0 получают ошибки синтаксического анализа. Я зарегистрировал проблему с моим хостинг-провайдером, а также на странице проекта.


person edpeciulis    schedule 13.02.2012    source источник
comment
Вы пытались запустить скрипт на этом сервере в командной строке? Сообщения об ошибках/номера строк PHP в некоторых случаях МОГУТ лгать вам.   -  person Marc B    schedule 13.02.2012
comment
Худшая проблема, которая может быть: P Может быть что угодно, от синтаксической ошибки (например, отсутствия точки с запятой) до использования коротких тегов, когда вы не должны этого делать. Поскольку он работает локально, маловероятно, что это какая-то синтаксическая ошибка. Убедитесь, что ваша конфигурация php одинакова на вашем локальном хосте и сервере. В моем случае использовались короткие теги без включения.   -  person Vinoth Gopi    schedule 13.02.2012
comment
@MarcB Я использую провайдера виртуального хостинга, поэтому не думаю, что там есть способ получить доступ к PHP из командной строки.   -  person edpeciulis    schedule 13.02.2012
comment
@VinothGopi Нет никаких необычных различий в настройках между двумя файлами php.ini. Все остальные мои php-скрипты работают нормально. На данный момент я тестирую другую библиотеку, которая работает на удаленном сервере, хотя она не такая элегантная, как библиотека simple-linkedinphp.   -  person edpeciulis    schedule 13.02.2012


Ответы (1)


Ошибка HTTP 500 Внутренний сервер для php-страниц и решения

Как правило, для решения этой проблемы вам необходимо воспользоваться помощью файлов журнала, расположенных по следующему адресу:

=> /var/log/message
=> /var/log/httpd/error_logs (/var/log/lighttpd/error_log or /var/log/httpd/error_log)

Эта ошибка возникает только из-за программного обеспечения веб-сервера. Однако, просматривая журналы, вы можете не найти много деталей. Эта проблема может быть вызвана:

  1. Неверный скрипт php cgi
  2. Недопустимая директива в .htaccess или другом файле конфигурации.
  3. Ограничение, налагаемое файловой системой и программным обеспечением сервера (например, размер файла журнала php установлен равным 10 МБ) 4. Отсутствует php.ini (или невозможно прочитать файл php.ini)

В большинстве случаев это неверная директива .htaccess. Однако недавно я наткнулся на веб-сервер без файла /etc/php.ini. Давным-давно я настроил этот сервер) Apache chrooted jail). Итак, вам нужно поддерживать два файла: один вне тюрьмы, а другой внутри тюрьмы:

=> /etc/php.ini
=> /chroot/etc/php.ini <-- this file was missing

Многие сценарии открывают этот файл на лету, чтобы получить правильные директивы конфигурации. Если этот файл не найден, вы получите ошибку 500. Потребовалось некоторое время, чтобы разобраться с этой проблемой. Наконец, strace помог мне отладить эту проблему.

person thecodedeveloper.com    schedule 13.02.2012
comment
В итоге я переключился на другую библиотеку, но это полезные советы по устранению неполадок. Я бы также добавил, что при просмотре файлов журналов полезно использовать grep -v для фильтрации того, что вам не нужно, и grep для отображения только строк, содержащих строку для соответствия. - person edpeciulis; 20.11.2012