LINUX.ORG.RU
решено ФорумAdmin

gentoo apache2+mod_php пустая страница

 , ,


0

1

После переезда с бубунты на gentoo возникла странная проблема: при попытке установить my little forum, получаю пустую страницу в броузере, никаких ошибок ни в логах ни в броузере нет. Даже после добавления ini_set('display_errors', 1); и error_reporting(E_ALL); в index.php. Если вписать в index.php произвольную строку, то получаю ошибку unexpected T_VARIABLE. Даже права на всю директорию рекурсивно выставил 777.
Другие php приложения работают нормально: postfixadmin, phpmyadmin, GetSimple. результат phpinfo.
Куда копать? Теряюсь в догадках.

[ebuild   R    ] www-servers/apache-2.2.22-r1 USE="ssl threads -debug -doc -ldap (-selinux) -static -suexec" APACHE2_MODULES="alias auth_basic auth_digest authn_file authz_host authz_user autoindex deflate dir filter headers include log_config mime mime_magic rewrite version vhost_alias -actions -asis -authn_alias -authn_anon -authn_dbd -authn_dbm -authn_default -authz_dbm -authz_default -authz_groupfile -authz_owner -cache -cern_meta -cgi -cgid -charset_lite -dav -dav_fs -dav_lock -dbd -disk_cache -dumpio -env -expires -ext_filter -file_cache -ident -imagemap -info -log_forensic -logio -mem_cache -negotiation -proxy -proxy_ajp -proxy_balancer -proxy_connect -proxy_ftp -proxy_http -proxy_scgi -reqtimeout -setenvif -speling -status -substitute -unique_id -userdir -usertrack" APACHE2_MPMS="worker -event -itk -peruser -prefork"

[ebuild   R    ] dev-lang/php-5.3.13 USE="apache2 bzip2 calendar curl gd iconv imap json mysqli nls pdo posix readline session simplexml ssl sysvipc threads unicode xml zip zlib -bcmath -berkdb -cdb -cgi -cjk -cli -crypt -ctype -curlwrappers -debug -doc -embed -enchant -exif -fileinfo -filter -firebird -flatfile -fpm (-frontbase) -ftp -gdbm -gmp -hash -inifile -intl -iodbc -ipv6 -kerberos -kolab -ldap -ldap-sasl -libedit -mhash -mssql -mysql -mysqlnd -oci8-instant-client -odbc -pcntl -phar -pic -postgres -qdbm -recode -sharedmem -snmp -soap -sockets -spell -sqlite -sqlite3 -suhosin (-sybase-ct) -tidy -tokenizer -truetype -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl"
конфиги, практически, дефолтные, без извратов. В бубунте был lighttpd и fastcgi.


поставь display_errors не через ini_set, а в /etc/php/apache2-php5.3/php.ini

поставь там же error_reporting не E_ALL а E_ALL | E_STRICT

Pinkbyte ★★★★★ ()

grep -r error_reporting по php файлам сделал - закоментил строки.

lnx ()

Даже с полностью дефолтными установками результат никакой.
Что с чем пересобрать? apache или php? :)

lnx ()
Ответ на: комментарий от SAA

в error_log ничего, а в acces - всё ОК.
192.168.0.3 - - [27/May/2012:18:46:24 +0300] «GET /mlf/install/index.php HTTP/1.1» 200 -

lnx ()
Ответ на: комментарий от SAA

в /var/log/messages тоже тишина, error_log = syslog.
если записать произвольные сиволы в php файл, то ошибки выводятся, типа syntax error, unexpected T_VARIABLE in ....

lnx ()
Ответ на: комментарий от shell-script

Не сОит быть таким категоричным, а надо внимательнее читать вопрос. тот FAQ я конечно же читал
рекурсивный chmod 777 - мало?
Веб приложение перенесено из работавшей системы. И вообще, даже с неправильными правами, должны были бы быть ошибки в логах.

lnx ()
Ответ на: комментарий от lnx

Ну тогда читаем дальше: «Depending on your server configuration the write permission of the subdirectory templates_c (CHMOD 770, 775 or 777) and the file config/db_settings.php (CHMOD 666) might need to be changed in order that they are writable by the script»

shell-script ★★★★★ ()
Ответ на: комментарий от shell-script
ls -l config/db_settings.php 
-rw-rw-rw- 1 apache apache 923 Jan 31  2010 config/db_settings.php

ls -l | grep template       
drwxrwxrwx 2 apache apache  4096 May 27 13:27 templates_c/

ну я же говорю, что FAQ читал.

lnx ()

круг сужается: lighttpd+fastcgi на этом же ящике дает абсолютно такой же результат.

lnx ()

Пересобрал php с mysql, до этого было только mysqli - всё заработало! у меня сейчас голова треснет, как это всё объяснить?

lnx ()
Ответ на: комментарий от lnx

у меня сейчас голова треснет, как это всё объяснить?

Скорее всего там где-то был require или include замаскированный собакой. В таком случае при фатальной ошибке в подгружаемом модуле («function mysql_connect not found») никакой индикации никуда не будет. Все логи останутся чистыми.

Сколько лет твердят миру, чтобы вывод функций без _особой_ нужны не маскировать, но народ по-прежнему лепит собаки на каждый чих...

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Хотя про «\(» я погорячился, часто пишут или с пробелом перед скобкой или вообще без скобок: include 'path/to/file.php';

Так что:

grep -lirE '@(include|require)' .

KRoN73 ★★★★★ ()
Ответ на: комментарий от lnx

ясно всё. куча @mysql_query

Вот это, как раз, должно быть не страшно (в нашем контексте). Максировка отсутствующей функции всё равно выбросит фатальную ошибку, которая или отразится или в логах или на странице.

Опасна именно маскировка @require/@include — тогда, при ошибке в подключаемом модуле (в т.ч. при обращении к отсутствующей функции) скрипт умрёт без всякой сигнализации.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

ну, похоже, как я понимаю, в данном случае mysqli не полностью обратно совместим с расширением mysql, а вывод ошибох всех функций, относящихся к mysql засобачен.
Обнаружил только благодаря попытке запустить zen-cart на этом же хосте. Он честно ругнулся, что не может соединиться с mysql, вот только формулировку ошибки не запомнил. Сразу добавил mysql в USE флаги пакета php, пересобрал и - слава яйцам!

lnx ()
Ответ на: комментарий от lnx

похоже, как я понимаю, в данном случае mysqli не полностью обратно совместим с расширением mysql

Никак не совместим. Там разные функции используются: mysql_* и mysqli_*

Поэтому при установленном mysqli и отсутствии mysql должны сыпаться фатальные ошибки типа «функция mysql_connect не найдена».

KRoN73 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.