Вопрос или проблема
Я пытаюсь установить 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
Шаги, которые я предпринял –
-
скачать instantclient-basic-linux-12.2.0.1.0.zip
-
скачать instantclient-sdk-linux.x64-12.2.0.1.0.zip
- создать директорию в /opt/oracle
- распаковать оба zip-файла
- выполнить команду 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
Пожалуйста, помогите!! Большое спасибо.
- 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 на вашем сервере. Если у вас возникнут другие ошибки или вопросы в процессе, пожалуйста, не стесняйтесь задавать их.