почему мой php.ini не найден?

#php

#php

Вопрос:

Я настраиваю / создаю /make install php в системе, где php уже установлен:

  ./configure --prefix=/opt/php
 --with-config-file-path=/opt/php/etc --with-config-file-scan-dir=/opt/php/etc/php.d
 --enable-fpm --with-fpm-user=ec2-user --with-fpm-group=ec2-user --disable-debug 
 --enable-exif --with-curl --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-
 pdo-mysql=mysqlnd --with-zlib --enable-zip --enable-bcmath --enable-calendar 
 --enable-ftp --with-mhash --with-openssl --with-mcrypt --enable-mbstring --enable-
 mbregex --with-gd --with-jpeg-dir --with-png-dir
  

(все в порядке) однако, когда я набираю php —ini (внутри /opt/php/bin) Я получаю старый материал:

 > Configuration File (php.ini) Path:
> /etc Loaded Configuration File:       
> /etc/php.ini Scan for additional .ini
> files in: /etc/php.d Additional .ini
> files parsed:      /etc/php.d/apc.ini,
> /etc/php.d/curl.ini,
> /etc/php.d/fileinfo.ini,
> /etc/php.d/json.ini,
> /etc/php.d/mbstring.ini,
> /etc/php.d/phar.ini,
  

почему / как я могу это исправить?

мой bashrc:

если [ -d «/opt/php/bin»] amp;amp; [ -d «/opt/php/sbin» ]; то PATH=»$path:/opt/php/bin:/opt/php/bin»

мой php-config выглядит нормально:

 Usage: ./php-config [OPTION]
Options:
  --prefix            [/opt/php]
  --includes          [-I/opt/php/include/php -I/opt/php/include/php/main -I/opt/php/include/php/TSRM -I/opt/php/include/php/Zend -I/opt/php/include/php/ext -I/opt/php/include/php/ext/date/lib]
  --ldflags           []
  --libs              [-lcrypt   -lz -lcrypt -lrt -lmcrypt -lltdl -lpng -lz -ljpeg -lcurl -lz -lrt -lm -ldl -lnsl  -lrt -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lcurl -lxml2 -lz -lm -lssl -lcrypto -ldl -lz -lxml2 -lz -lm -lcrypt -lxml2 -lz -lm -lxml2 -lz -lm -lxml2 -lz -lm -lcrypt ]
  --extension-dir     [/opt/php/lib/php/extensions/no-debug-non-zts-20090626]
  --include-dir       [/opt/php/include/php]
  --php-binary        [/opt/php/bin/php]
  --php-sapis         [cli fpm]
  --configure-options [--prefix=/opt/php --with-config-file-path=/opt/php/etc --with-config-file-scan-dir=/opt/php/etc/php.d --enable-fpm --with-fpm-user=ec2-user --with-fpm-group=ec2-user --disable-debug --enable-exif --with-curl --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib --enable-zip --enable-bcmath --enable-calendar --enable-ftp --with-mhash --with-openssl --with-mcrypt --enable-mbstring --enable-mbregex --with-gd --with-jpeg-dir --with-png-dir]
  --version           [5.3.5]
  --vernum            [50305]
  

но … myphp.ini не найден, кажется, мой —with-config-file-path=PATH (Задает путь, по которому нужно искать php.ini, по умолчанию используется ПРЕФИКС/lib.) почему-то не работает?

Комментарии:

1. ./php --ini Ввод /opt/php/bin текста что-нибудь меняет?

2. @Felix, вероятно, прав. php и ./php — это две разные вещи. php принимает файл в $PATH (вероятно, /usr/bin/php), в то время как ./php принимает файл в cwd.

3. ДА… он показывает другое старое местоположение ….. /usr/local / lib … хотя время php — это время, когда я его создаю (я изменил и экспортировал путь bashrc

Ответ №1:

Вот что я сделал в аналогичной ситуации :

Контекст: PHP загружен как модуль Apache (например, DSO)

КАК вкратце :
оболочка ENV

 PHP_INI_SCAN_DIR=/pathtophpini
export PHP_INI_SCAN_DIR
  

http.conf

 # ...
# DSO Modules: PHP as an Apache module
SetEnv PHPRC /usr/pathtophpini
SetEnv PHP_INI_SCAN_DIR /usr/pathtophpini

LoadModule php5_module /pathtophpmod/libphp5.so
PHPINIDir /pathtophpini
# ...
  

Оболочка

 /etc/init.d/apache2 restart   
  

Затем я могу выбрать файл php.ini, который я хочу загрузить при запуске Apache.

Ответ №2:

В запросе PHP #45114, jani@php.net пишет:

Я добавил 2 способа сделать это. Теперь вы можете либо использовать оба параметра -n и -c в параметрах командной строки (-n отключает каждую загрузку ini, -c разрешает загрузку указанного файла / по указанному пути), либо установить переменной среды PHP_INI_SCAN_DIR значение empty (отключает сканирование), либо указать на какой-либо другой каталог.

Пример:

php -n -c /conf -r'phpinfo();'

Вывод:

 ...
Configuration File (php.ini) Path => /etc/php5/cli
Loaded Configuration File => /conf/php.ini
Scan this dir for additional .ini files => (none)
Additional .ini files parsed => (none)
...
  

Ответ №3:

Попробуйте команду which -a , чтобы увидеть, какой исполняемый файл php находится в пути.

Комментарии:

1. /usr/bin/php /opt/php/bin / php удаление первого не приносит мне никакой пользы

Ответ №4:

Теперь у меня был 5.3.5. Я настроил 5.3.6, сконфигурировал, создал, произвел установку…

и настройки .ini были в порядке.

Комментарии:

1. Означает ли это, что сейчас он работает? Если вы измените местоположение ini через configure после того, как вы уже создали его один раз, я думаю, вам нужно сделать make clean amp;amp; make , чтобы он обновился.

2. он работает не полностью… но я думаю, что теперь у меня есть еще одна штуковина, «неспособная к глобализации», но это выходит за рамки данного вопроса. Да …… make Я забыл сделать make clean может быть.