31 (13.03.2012 15:55:10 отредактировано Silencer)

А все-таки, можно узнать что именно настроить в httpd.conf для локального хостинга apache и, как следствие, обработки php-скриптов?

32

Silencer пишет:

А все-таки, можно узнать что именно настроить в httpd.conf для локального хостинга apache и, как следствие, обработки php-скриптов?

ну во первых индексный файл сменить с index.html на index.php, во вторых раскомментировать Include /etc/httpd/mod_php.conf
Всё вроде-бы. Конечно ещё надо создать php.ini, из образцов, или самостоятельно.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

33

Все, заработало. Всем сочувствующим/помогавшим спасибо/+1  smile

34

всем привет. решил не начинать новую тему, т.к речь здесь уже зашла про MySQL. У меня такая проблема: Slackware 14.0 x86, сам ничего не устанавливал, все уже есть в системе и дожидается настройки, поэтому никакие LAMP'ы и ему подобные приложения не ставил, решил связать все сам, все получилось кроме php и mysql. при попытке обратиться к БД из кода php вылезает

Fatal error: Call to undefined function mysql_connect()

Вот кусок кода из моего php.ini:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;

; If you wish to have an extension loaded automatically, use the following
; syntax:
;
;   extension=modulename.extension
;
; For example, on Windows:
;
;    extension=msql.dll
;
; ... or under UNIX:
;
     extension=msql.so
;
; ... or with a path:
;
;    extension=/path/to/extension/msql.so
;
;
; If you only provide the name of the extension, PHP will look for it in its
; default extension directory.
;

35

Тонко намекну:

# locate extensions/{mysql,mysqli}.so
/usr/lib64/php/extensions/mysql.so
/usr/lib64/php/extensions/mysqli.so

# ls /usr/lib64/php/extensions/msql.so
ls: невозможно получить доступ к /usr/lib64/php/extensions/msql.so: Нет такого файла или каталога

И да, у вас, если правильно путаю, уже есть пара достойных примеров php.ini:

# locate php.ini-
/etc/httpd/php.ini-production
/etc/httpd/php.ini-development

36

думал нашел ошибку в php.ini:

     extension=msql.so

изменил на

     extension=mysql.so

как оказалось, дело не в этом. Еще решил поправить

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
; extension_dir = "./"

на

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir
  extension_dir = "/usr/lib/php/extensions/"

что также не помогло
bormant, я новичок, пожалуйста, можно без намеков, а прямо))) уж очень хочется разобраться в этом, весь гугл облазил и безрезультатно, вся надежда на вас.

37

Milten пишет:

можно без намеков, а прямо)

Давайте убедимся, что всё остальное в порядке:

# cp /etc/httpd/php.ini{,.bak}
# cp /etc/httpd/php.ini{-production,}

# grep php /etc/httpd/httpd.conf 
Include /etc/httpd/mod_php.conf

# cat << EOF > /srv/www/htdocs/index.php
<?php
    phpinfo();
?>
EOF

# chmod a+x /etc/rc.d/rc.httpd
# /etc/rc.d/rc.httpd start

# lynx -dump http://localhost/index.php | grep -A3 ^mysql
mysql

   MySQL Support enabled
   Active Persistent Links 0
--
mysqli

   MysqlI Support enabled
   Client API library version mysqlnd 5.0.10 - 20111026 - $Id:
--
mysqlnd

   mysqlnd enabled
   Version mysqlnd 5.0.10 - 20111026 - $Id:

Если в подобном варианте всё также, анализируйте разницу между своими настройками и дистрибутивными.

38

Вот что получилось:

# lynx -dump http://localhost/index.php | grep -A3 ^mysql
mysqlnd

   mysqlnd enabled
   Version mysqlnd 5.0.10 - 20111026 - $Id:

39

Необходимая пара расширений не подключена.

Проверяем:

# grep '^\s*extension=my\|^\s*extension_dir' /etc/httpd/php.ini
extension=mysql.so
extension=mysqli.so

# ls -1 /usr/lib/php/extensions/mysql*
/usr/lib/php/extensions/mysql.so
/usr/lib/php/extensions/mysqli.so

# ls /var/log/packages/php-*
/var/log/packages/php-5.4.7-i486-1

# grep /mysql.*so$ /var/log/packages/php-*
usr/lib/php/extensions/mysqli.so
usr/lib/php/extensions/mysql.so

# find /etc -name \*.new

# cat /etc/*version; uname -m
Slackware 14.0
i686

40

Все проверил, выводы в точности такие как вы привели. Это заговор какой-то прям - все есть но не работает)

41 (01.11.2012 19:03:48 отредактировано bormant)

# ldd /usr/lib/php/extensions/mysql{,i}.so

ничего подозрительного не говорит? В /var/log/httpd/error_log ничего относящегося к делу нет?

ps.

Milten пишет:

никакие LAMP'ы и ему подобные приложения не ставил

LAMP -- это акроним от Linux, Apache, MySQL, PHP, все они есть в комплекте.

42 (01.11.2012 20:41:35 отредактировано Milten)

Насколько я понимаю ничего подозрительного:

# ldd /usr/lib/php/extensions/mysql{,i}.so
/usr/lib/php/extensions/mysql.so:
        linux-gate.so.1 (0xffffe000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb76dc000)
        libc.so.6 => /lib/libc.so.6 (0xb7557000)
        /lib/ld-linux.so.2 (0xb7730000)
/usr/lib/php/extensions/mysqli.so:
        linux-gate.so.1 (0xffffe000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb7689000)
        libc.so.6 => /lib/libc.so.6 (0xb7504000)
        /lib/ld-linux.so.2 (0xb76ef000)
[Thu Nov 01 12:05:10.993926 2012] [core:notice] [pid 6355:tid 3069728512] AH00094: Command line: '/usr/sbin/httpd'
PHP:  syntax error, unexpected '(' in /etc/httpd/php.ini on line 427
PHP:  syntax error, unexpected '(' in /etc/httpd/php.ini on line 427
PHP:  syntax error, unexpected '(' in /etc/httpd/php.ini on line 427
[Thu Nov 01 12:07:25.811735 2012] [mpm_event:notice] [pid 6355:tid 3069728512] AH00491: caught SIGTERM, shutting down
PHP:  syntax error, unexpected '(' in /etc/httpd/php.ini on line 427
[Thu Nov 01 12:07:33.409205 2012] [mpm_event:notice] [pid 6568:tid 3069572864] AH00489: Apache/2.4.3 (Unix) PHP/5.4.7 configured -- resuming normal operations
[Thu Nov 01 12:07:33.409267 2012] [core:notice] [pid 6568:tid 3069572864] AH00094: Command line: '/usr/sbin/httpd'

решил пофиксить синтаксическую ошибку в строке 427, но она закомментирована, а значит и смысла то нет править ее:

; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 5.4.0)

43 (01.11.2012 21:28:35 отредактировано bormant)

Причина в этом. После ошибки остаток php.ini игнорируется.

grep -n '^extension=mysql\|^;\sE_ALL' /etc/httpd/php.ini
427:; E_ALL             - All errors and warnings (includes E_STRICT as of PHP 5.4.0)
884:extension=mysql.so
885:extension=mysqli.so

Откуда у вас файл с ошибкой? В дистрибутивных примерах php.ini-development и php.ini-production никаких ошибок нет.


UPD: Посмотрите на предыдущую строку, возможно при помощи mcview в 16-ричном режиме, нет ли каких аномалий, могущих заставить игнорировать стартовый ";" (^H, ^M и что угодно ещё)...
Попробуйте восстановить оригинальный файл из пакета php или переустановите пакет целиком.

UPD2: phpinfo() можно вызывать и смотреть так:

php -r 'phpinfo();' 2>&1 |less

44

bi огромное СПАСИБИЩЕ, bormant!!!! Все заработало.

# lynx -dump http://localhost/index.php | grep -A3 ^mysql
mysql

   MySQL Support enabled
   Active Persistent Links 0
--
mysqli

   MysqlI Support enabled
   Client API library version mysqlnd 5.0.10 - 20111026 - $Id:
--
mysqlnd

   mysqlnd enabled
   Version mysqlnd 5.0.10 - 20111026 - $Id:

А файл был с самого начала. Очень странно что закомментированная строка все равно оказывает какое-либо влияние bw

45

Пытаюсь наcтроить в MySQL UTF-8, но никак не разберусь в какой конфигурационный файл вносить изменения. В /etc/mysql/ лежать несколько конфигурационных файлов, а так же в /usr/share/mysql/, ни те ни другие не трогал, но насколько я знаю, необходимо выбрать какой-либо один подходящий и переименовать его в my.cnf и уже его редактировать. И вот, собственно вопрос, если я никакой конфигурационный файл не настраивал, а MySQL запускается и работает без проблем, то значит какой-то конфиг. файл он читает по умолчанию, как узнать какой и где он находится? Быть может тогда прямо в него внести изменения по поводу UTF8 или лучше создать свой my.cnf и вести все настройки в нем? (В этом случае еще один вопрос: как указать MySQL чтобы он читал именно этот мой файл?)

46

Переименовать -> скопировать. Но наличие файла необязательно, в этом случае все параметры принимают значения по умолчанию. Чтобы это изменить, файлик придется создать, с нуля только со своими параметрами или из шаблона -- это уж вам по ситуации виднее должно быть.

47

Переименовать -> скопировать.

А куда скопировать?