Как изменить стандартную папку сборки Pear / PECL из / var / tmp? - PullRequest
2 голосов
/ 23 июня 2010

Я пытаюсь установить пакет PECL в Linux, но установщик так и не прошел этап настройки.

Мой хостинг-провайдер установил файловую систему в / var / tmp, которая препятствует выполнению файлов, иэто вызывает эту ошибку:

root@host [/usr/local/apache/conf/includes]# pecl install pdo
downloading PDO-1.0.3.tgz ...
Starting to download PDO-1.0.3.tgz (52,613 bytes)
.............done: 52,613 bytes
12 source files, building
running: phpize
Configuring for:
PHP Api Version:         20041225
Zend Module Api No:      20060613
Zend Extension Api No:   220060519
building in /var/tmp/pear-build-root/PDO-1.0.3
running: /root/tmp/pear/PDO/configure
checking for egrep... grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.
ERROR: `/root/tmp/pear/PDO/configure' failed

Я на 99% уверен, что проблема в том, что вы не можете выполнить файлы в / var / tmp (я скопировал здесь исполняемый файл и попытался его проверить).Я уверен, что смогу заставить PECL завершить работу, если у меня есть его сборка где-то еще, но я не могу найти соответствующий параметр конфигурации.

Как вы говорите PECL для сборки не по умолчаниюпапка

Ответы [ 3 ]

2 голосов
/ 06 августа 2011

Ответы выше могут помочь пользователю, но не те, которые сталкиваются с проблемой "noexec" с / tmp dir.

Вот как pecl установить [программу], когда она завершается с ошибкой «Ошибка конфигурации не может запустить скомпилированные программы c», потому что вы не можете выполнить вещи в каталоге / tmp:

Сначала перемонтируйте каталог / tmp с включенной опцией exec: mount -o, remount, rw, exec / tmp

Во-вторых, установите расширение pecl: pecl install [имя расширения]

В-третьих, как только вы закончите, вы должны установить его обратно на «noexec», используя: mount -o, remount, rw, noexec / tmp

2 голосов
/ 23 июня 2010

Ого, почему вы устанавливаете PDO из PECL?PDO был встроен в PHP с 5.1.Вы используете 5.0?

Если вы используете 5.1 или выше и вам не хватает PDO, есть вероятность, что:

  1. Ваша копия PHP была скомпилирована без нее и должна быть перекомпилирована;или
  2. Ваша копия PHP была установлена ​​из репозитория вашей ОС без модуля PDO

Если 1, вам нужно либо перекомпилировать PHP с нуля, либо скомпилировать только общий модульи скопируйте его в правильное местоположение.

Если 2, вам просто нужно установить расширение PDO вашей ОС.Под RHEL и CentOS попробуйте yum search php-pdo.Я не знаю правильный синтаксис для вызова установщика пакета для других дистрибутивов, но пакет почти наверняка будет содержать строку "php-pdo".(Совет: если вы получили ваш PHP из своей ОС, они также могут предоставлять общие пакеты PECL. Попробуйте поискать «pecl» в их репозиториях.)

Наконец, если вы используете 5.0 ... дляРади всего хорошего в этом мире, обновляйся!Сначала прочтите примечания к обновлению в руководстве по PHP , на случай, если вы случайно используете старое поведение.

(Также, чтобы перенастроить pecl, попробуйте pecl config-show, чтобы увидеть, какие настройки доступны, а затем pecl config-set ..., чтобы изменить настройку. Не пытайтесь установить расширение PDO для версииPHP новее 5.0.x, он будет ломаться . В верхней части страницы PDO на PECL-сайте .)

есть даже большая жирная коробка.
0 голосов
/ 23 апреля 2014

В моем случае / tmp - это noexec, / var - исполняемый файл.

main10:~# mv /tmp/pear /var/tmp

main10:~# ln -s /var/tmp/pear /tmp/pear

Это решило проблему.

...