фатальная ошибка: zend_smart_str.h: Нет такого файла или директории

Вопрос или проблема

Я пытаюсь установить oci8, используя команду “pecl install oci8”, но получаю ошибку –

фатальная ошибка: zend_smart_str.h: Нет такого файла или директории
 #include "zend_smart_str.h"

Вот данные моей системы –
1.ubuntu 14.04
2.php 7.0.17-2+deb.sury.org~trusty+1

Шаги, которые я предпринял –

  1. скачать instantclient-basic-linux-12.2.0.1.0.zip

  2. скачать instantclient-sdk-linux.x64-12.2.0.1.0.zip

  3. создать директорию в /opt/oracle
  4. распаковать оба zip-файла
  5. выполнить команду pecl install oci8

Вывод –

/bin/bash /tmp/oci8-2.1.4/libtool --mode=compile cc  -I. -I/tmp/oci8-2.1.4 -DPHP_ATOM_INC -I/tmp/oci8-2.1.4/include -I/tmp/oci8-2.1.4/main -I/tmp/oci8-2.1.4 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -I/opt/oracle/instantclient_12_2/sdk/include  -DHAVE_CONFIG_H  -g -O2   -c /tmp/oci8-2.1.4/oci8.c -o oci8.lo 
libtool: compile:  cc -I. -I/tmp/oci8-2.1.4 -DPHP_ATOM_INC -I/tmp/oci8-2.1.4/include -I/tmp/oci8-2.1.4/main -I/tmp/oci8-2.1.4 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -I/opt/oracle/instantclient_12_2/sdk/include -DHAVE_CONFIG_H -g -O2 -c /tmp/oci8-2.1.4/oci8.c  -fPIC -DPIC -o .libs/oci8.o
/tmp/oci8-2.1.4/oci8.c:36:28: фатальная ошибка: zend_smart_str.h: Нет такого файла или директории
 #include "zend_smart_str.h"
                            ^
компиляция завершена.
make: *** [oci8.lo] Ошибка 1

Пожалуйста, помогите!! Большое спасибо.

  1. php 7.0.17-2+deb.sury.org~trusty+1

sudo apt-get install php7.0-dev

Предоставляет /usr/include/php/20151012/Zend/zend_smart_str.h

Ответ или решение

Чтобы решить проблему с ошибкой fatal error: zend_smart_str.h: No such file or directory, которая возникает при попытке установить расширение oci8 с помощью команды pecl install oci8, выполните следующие шаги:

1. Установите необходимые пакеты

На вашем Ubuntu 14.04 необходимо установить пакет php7.0-dev, который содержит файлы заголовков PHP, включая zend_smart_str.h. Для этого выполните следующую команду в терминале:

sudo apt-get update
sudo apt-get install php7.0-dev

2. Убедитесь, что все зависимости установлены

Кроме php7.0-dev, убедитесь, что у вас установлены и другие необходимые библиотеки и пакеты. Попробуйте установить следующие пакеты:

sudo apt-get install build-essential libaio1

3. Проверьте наличие файлов заголовков

После установки пакета php7.0-dev проверьте, что файл zend_smart_str.h находится в директории, например:

ls /usr/include/php/20151012/Zend/

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

4. Попробуйте снова установить oci8

Теперь, когда все зависимости установлены, попробуйте снова установить oci8 с помощью следующей команды:

pecl install oci8

5. Настройте PHP для использования oci8

После успешной установки расширения вам нужно будет добавить его в вашу конфигурацию PHP. Откройте файл php.ini:

sudo nano /etc/php/7.0/cli/php.ini

И добавьте следующую строку в конец файла:

extension=oci8.so

Также вам нужно будет внести аналогичные изменения в конфигурацию PHP для вашего веб-сервера (например, для Apache или Nginx).

6. Перезапустите сервер

После изменения конфигурации не забудьте перезапустить службы вашего веб-сервера:

sudo systemctl restart apache2

или

sudo systemctl restart nginx

Итоги

Теперь вы должны быть в состоянии успешно установить и использовать oci8 на вашем сервере. Если у вас возникнут другие ошибки или вопросы в процессе, пожалуйста, не стесняйтесь задавать их.

Оцените материал
Добавить комментарий

Капча загружается...