2016-01-26 4 views
0

Мой сервер использует Ubuntu с PHP5 и NginX.php include path does not work

Я установил грушу с помощью sudo apt-get install php-pear, а затем удалил ее с помощью sudo pear uninstall pear. Сегодня я скачал phpmailer с помощью sudo apt-get install libphp-phpmailer.

Я написал код для отправки электронной почты с phpmailer. Она начинается с:

require_once("class.phpmailer.php"); 

и я редактировать php.ini как в /etc/php5/cli и в /etc/php5/fpm установить:

include_path = ".:/usr/share/php/libphp-phpmailer" 

Это было хорошо работать, если я выполнить эту PHP программу в командной строке, но если я посещаю это PHP страницу через мой браузер, он производит ошибку HTML500, и я проверил error.log файл, который показывает:

PHP message: PHP Fatal error: require_once(): 
Failed opening required 'class.phpmailer.php' 
(include_path='.:/usr/share/php:/usr/share/pear') in ... 

брожу как идет этот путь? Я уверен, что я редактировал include_path в обоих файлах php.ini. Есть ли другой файл конфигурации, который я пропустил? Откуда взялась строка ".:/usr/share/php:/usr/share/pear"?

+0

Вы перезапустили fpm? – Progrock

+0

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

+1

Вызвать 'phpinfo' и посмотреть, действительно ли параметр устанавливает значение, которое вы так считаете. – CBroe

ответ

0

Если вы абсолютно уверены, что все пути верны, это может быть проблема с разрешением файла.

  1. Узнайте, какой пользователь Nginx работает под. Вероятно, это будет nginx. Запустите groups nginx, и выход должен быть nginx : nginx, то есть пользователь nginx существует и имеет только одну группу, которая также является nginx.
  2. В командной строке перейдите к адресу class.phpmailer.php и запустите ls -l, чтобы просмотреть разрешения файлов в этом каталоге. Пример вывода будет: -rw-r--r-- 1 someuser somegroup, что означает, что доступ для чтения и записи предоставляется владельцу (someuser), доступ для чтения для группы (некоторая группа) и доступ для чтения для всех остальных.
  3. Пользователь nginx (если он работает под ним) должен иметь доступ для чтения к этому файлу. Поэтому при необходимости измените владельца/разрешения.

Если вам нужно дополнительное объяснение, как это сделать, просто дайте мне крик, и я обновлю его с дальнейшими инструкциями.