Intereting Posts
Приложение Yii, загруженное на хост, вызывает ошибку 404, когда я вызываю определенное действие Какой RSS-парсер следует использовать в PHP? Php mysqi bind_param Число переменных не соответствует количеству параметров в подготовленном операторе Отправить письмо (серверная сторона, а не mailto) при нажатии кнопки html специальные символы preg_match Рекурсивное преобразование из SimpleXMLObject в массив Как отсортировать результаты MySQL по большинству совпадений при использовании LIKE Быстрый формат формата данных формата PHP Плохое значение для действия атрибута в форме элемента: должно быть непустым PDO-> bindParam, PDO-> bindValue и PDO-> closeCursor Самый простой способ выполнить локальный файл из Firefox? Лучшая стратегия защиты загружаемых файлов -php / mysql Apache2 server Получение Fatal Error Uncaught CurlException: 26: не удалось открыть файл $ _FILE upload large file дает ошибку 1, хотя upload_max_size больше размера файла Все изображения src запрос к скрипту php

Проблема с PEAR-каталогом в Windows

Я загрузил ZIP-архив PHP и извлек его под свой профиль. Затем мне понадобились пакеты PEAR. go-pear.bat по go-pear.bat видимому, установил PEAR просто отлично, мне просто нужно было после этого перейти в файл pear.bat и адаптировать путь к php.exephp.exe и после этого он работал.

Однако, когда я пытаюсь установить что-то, я получаю следующую ошибку:

ERROR: не удалось выполнить mkdir C: \ php5 \ pear \ data \ Console_CommandLine \ data

Естественно, в корневом каталоге не разрешен доступ на запись, но я немного не понимаю, как именно PEAR считает, что он должен устанавливать что-либо в месте, которое ни существует, ни настроено нигде. В настоящее время PHP находится где-то ниже H:\ (subst'ed в моем профиле). Все пути, которые я вводил во время установки PEAR, были работоспособны, и единственное место, где я могу найти C:\php5 находится в PEAR/go-pear.phar и в документации. Один из них – это то, что я не должен менять в любом случае, я думаю, и другое вряд ли имеет отношение к самой программе.

Теперь я, вероятно, могу войти и сделать C:\php5 / symlink в каталог, в котором находится PHP в настоящее время или фактически установить его в этом месте – обе вещи, которые я бы предпочел избежать, поскольку это изначально предназначалось для небольшого теста что нибудь.

Я с тех пор смотрел в pear help install и, видимо, я могу использовать -P или -R чтобы установить некоторые пути. Точная разница между ними до сих пор остается неясной для меня, но, думаю, это не помешает попробовать. Как-то результат был … неожиданным:

-PH:\Downloads\php\PEAR привели к забавной ошибке (среди прочего)

ERROR: не удалось выполнить mkdir C: \ Downloads \ php \ PEAR \ php5 \ pear \ data \ Console_CommandLine \ data

в то время как -R использует один и тот же путь (по-видимому -R диктует, где загружаются файлы, поскольку это работало до того, как я предполагаю, что я не должен касаться этого) привело к еще большему веселью:

каталог загрузки «C: \ Downloads \ php \ PEAR \ Users \ JOHANN ~ 1 \ AppData \ Local \ Temp \ pear \ download" не может быть записан. Изменить переменную config_load_dir на записываемый каталог

К настоящему моменту я предполагаю, что C:\ и php5 где-то жестко закодированы без видимой причины (мои переменные среды также не содержат ничего подобного), поэтому я снова буду рыть, на этот раз ищу более короткую строку и, следовательно, более длинные списки результатов.

Но если у кого-то есть представление об этом, тем может быть полезно.

Проблема в том, что PEAR ищет свой ini-файл в каталоге Windows, и поскольку он его не находит, он прибегает к угадыванию местоположения. Хуже того, вы не можете изменить какие-либо настройки конфигурации с помощью pear config-set потому что PEAR не имеет pear.ini для записи. В то же время PEAR игнорирует существующий файл pear.ini в своем собственном каталоге. Это беспорядок. См. Отчет об ошибке .

Если есть только одна глобальная установка PEAR, PEAR может быть рассказано, где искать INI-файл, создав переменную окружения PHP_PEAR_SYSCONF_DIR , указав на правильный каталог.

Но если есть несколько локальных PEAR-установок, вам придется заплатить pear.bat, добавив эту строку:

IF "%PHP_PEAR_SYSCONF_DIR%"=="" SET "PHP_PEAR_SYSCONF_DIR=C:\path\to\pear.ini\directory"

Немного лучший вариант, чем ответ Майкла Х, может быть:

  1. Откройте $prefix\pear\PEAR\Config.php где $prefix – это значение, используемое в установщике PEAR. (В моей системе Windows $prefix был C:\php\5.4.0 )

  2. Найдите раздел ниже:

     if (getenv('PHP_PEAR_SYSCONF_DIR')) { define('PEAR_CONFIG_SYSCONFDIR', getenv('PHP_PEAR_SYSCONF_DIR')); } elseif (getenv('SystemRoot')) { define('PEAR_CONFIG_SYSCONFDIR', getenv('SystemRoot')); } else { define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); } 
  3. И внесите следующие изменения:

     if (getenv('PHP_PEAR_SYSCONF_DIR')) { define('PEAR_CONFIG_SYSCONFDIR', getenv('PHP_PEAR_SYSCONF_DIR')); //} elseif (getenv('SystemRoot')) { //define('PEAR_CONFIG_SYSCONFDIR', getenv('SystemRoot')); } else { //define('PEAR_CONFIG_SYSCONFDIR', PHP_SYSCONFDIR); // This next line is new define('PEAR_CONFIG_SYSCONFDIR', $PEAR_INSTALL_DIR); } 

Это решение менее подвержено риску при работе с несколькими версиями / установками PHP / PEAR, особенно при одновременном запуске более одного, поскольку вы избегаете сближения с окружающей средой.

По-видимому, разработчики PEAR не обратили внимания на то, что WINDOWS , Program Files и друзья устарели как каталоги приложений-данных с Windows Vista и, как правило, больше не доступны для записи приложениями с невыполненными правами. (По соображениям безопасности).

Посмотрите параметры config-... команды PEAR:

 config-create Create a Default configuration file config-get Show One Setting config-help Show Information About Setting config-set Change Setting config-show Show All Settings 

Я предполагаю, что C:\php5 является встроенным каталогом по умолчанию, когда вы не устанавливаете другой.

вы можете указать конфигурационный файл через

 pear -c /path/to/config/file $command 

У меня была та же проблема. Мой конфигурационный файл отсутствовал в каталоге C:\Windows – что-то не так с установщиком go-pear – я указал другое местоположение файла INI , но мое желание не сбылось.

Я скопировал pear.ini в C:\windows и все начало работать.