Ответы пользователя по тегу PHP
  • Как мне для разных сайтов использовать свой php.ini?

    Можно прям тут.
    Опять же у каждого сайта будет свой юзер и група
    listen = /var/lib/php7.4-fpm/web2.sock
    listen.owner = web2
    listen.group = www-data
    listen.mode = 0660
    
    user = web2
    group = client2
    
    pm = dynamic
    pm.max_children = 10
    pm.start_servers = 2
    pm.min_spare_servers = 1
    pm.max_spare_servers = 5
    pm.max_requests = 0
    
    chdir = /
    
    env[HOSTNAME] = $HOSTNAME
    env[TMP] = /var/www/clients/client2/web2/tmp
    env[TMPDIR] = /var/www/clients/client2/web2/tmp
    env[TEMP] = /var/www/clients/client2/web2/tmp
    env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
    
    php_admin_value[mbstring.func_overload] = 2
    php_admin_value[default_charset] = utf-8
    php_admin_value[max_input_vars] = 10000
    php_admin_value[max_file_uploads] = 500
    php_admin_value[max_execution_time] = 300
    php_admin_value[post_max_size] = 1040M
    php_admin_value[upload_max_filesize] = 1040M
    php_admin_value[pcre.backtrack_limit] = 1000000
    php_admin_value[pcre.recursion_limit] = 100000
    php_admin_value[realpath_cache_size] = 2048k
    php_admin_value[mbstring.internal_encoding] = UTF-8
    php_admin_value[date.timezone] = Europe/Moscow
    php_admin_value[memory_limit] = 256M
    php_admin_value[zend_extension] = opcache.so
    php_admin_flag[opcache.enable] = 1
    php_admin_value[opcache.memory_consumption] = 2048
    php_admin_value[opcache.interned_strings_buffer] = 512
    php_admin_value[opcache.max_accelerated_files] = 100000
    php_admin_flag[opcache.max_wasted_percentage] = 1
    php_admin_flag[opcache.validate_timestamps] = 1
    php_admin_flag[opcache.revalidate_freq] = off
    php_admin_flag[opcache.fast_shutdown] = 1
    php_admin_flag[opcache.save_comments] = 1
    php_admin_flag[opcache.load_comments] = 1
    php_admin_flag[opcache.revalidate_freq] = off
    php_admin_flag[mail.add_x_header] = On
    php_admin_flag[short_open_tag] = On
    Ответ написан
    Комментировать
  • Как сделать на PHP редирект на другой сервер с сохранением домена?

    В общем это не пхп конечно должен делать
    но если уж прям так хочется на нем то https://github.com/zounar/php-proxy
    ну и балансируйте как вам там будет угодно
    я через него деалал пару раз такие тз как, "Эхочу старые урлы на старом движке а новые на новом".
    соответственно пихаешь в 404 вот эту штуку и смотришь не отдаст ли там 200, ну если и там нет то 404 отдавал.
    В вашем случае по другому, но как ни странно с небольшим допилом работало.
    Ответ написан
    Комментировать
  • Где пропустил ошибку не получаю второй?

    $re = '/href="([^"]+)"/m';
    $str = '</span></div></div><a href="/player/harry-kane/108579"><div cursor="pointer" display="flex" class="sc-hLBbgP sc-eDvSVe izqzSd fRddxb">
    
    </span></div></div></div></div></a><a href="/player/heung-min-son/111505"><div cursor="pointer" display="flex" class="sc-hLBbgP sc-eDvSVe izqzSd fRddxb">';
    
    preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
    
    // Print the entire match result
    var_dump($matches);
    Ответ написан
    Комментировать
  • Как правильно настроить .htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    Господа еще раз, я уже не знаю в какой
    RewriteRule- вообще не знает про GET, ну не является он по его мнению частью урла от слова совсем.
    Осознав эту мысль вы с легкостью поймете что утверждение
    RewriteRule ^cases/$ 
    RewriteRule ^cases/(.*)$
    RewriteRule ^cases/?id=dsfasdfasdfadsfsdaf$

    ОДИНАКОВЫ, если мы говорим про гет параметры.

    А вот если бы вы написали
    RewriteCond %{REQUEST_URI} ^case.php$ 
    RewriteCond %{QUERY_STRING} (^|&)id\=title-of-case($|&)
    RewriteRule   ........

    ТО смогли бы поставить условие по этому GET параметру.
    Но не удалить его, поскольку он опять же не попадает в RewriteRule

    Просто же удалить GET можно очень не очевидным способом.
    RewriteRule было стало? [QSA,L]
    Знак вопроса не опечатка, именно он в конце удалит гет папраметры с урла.
    л -логика ;) логика
    Логика mod_rewrite требует особого вида мышления ;)
    Ответ написан
    Комментировать
  • Как перенаправить ответ Curl'a клиенту?

    Ниче не понял но вот вам про курл пхп и полные заголовки.
    https://gist.github.com/lemmycaution/3818359
    https://github.com/zounar/php-proxy
    Удобная вещь для подобных извращений.
    Ответ написан
    Комментировать
  • Как объедеить запросы и выполнить один SQL запрос и затем получить результат в виде значений переменных PHP?

    Тебе нужно собрать собственный массив с этими данными.
    1 способ так себе, но рабочий создаешь массив и пихаешь в него эти данные в том формате что тебе нужно.
    Если совсем топорно то
    SELECT v.product, v.link, v.link FROM v_product v WHERE v.id = 5463 ORDER BY v.product ASC;
    ->
    $row[product]
    SELECT i.id as info_id, i.link_to_site FROM infograph v WHERE id = 5463;
    ->
    $row[infograph]и так далее.
    это совсем утрировано, все зависит от того что ты хочешь. Мысль в том что массив можно изменять и дописывать в него другими селектами

    2. но как правило просто используют JOIN в mysql К примеру LEFT JOIN Тем самым ты собираешь данные из разных таблиц в одну притом можешь управлять что с какйо стороны будет появляться, дабы потом просто выплевывать в foreach уже в виде готовых данных.

    Вот пример не шибко хороший но для принципа пойдет.
    мы выбераем нужные поля в одной таблице не беря лишнего, и берем нужные поля с другой таблицы.
    На выводе получается только те данные что нам нужны не берутся лишние ни с той ни с той таблицы.

    SELECT 
    	b.bid AS nid, 
    	b.text AS field_text_tgb_value, 
    	b.url AS field_tgb_url_value, 
    	b.footer AS field_tgb172_footer_value, 
    	b.zeropixel AS field_tgb172_zero_value, 
    	b.header_text AS title, 
    	b.filename AS filepath 
    FROM `ad_banners` b 
    JOIN `ad_c` a ON `b`.`bid` = `a`.`bid`
    WHERE 
    	`a`.`start_date`<from_unixtime(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i') AND
    	`a`.`end_date`>from_unixtime(UNIX_TIMESTAMP(), '%Y-%m-%d %H:%i') AND
        `a`.`ban_type` = '1' /* 1 - 172, 2 - 250, 3 - 330 */ AND
    	`a`.`w_site` = '$safesite' /* какой сайт 1 - НК, 2 - СПБ, 3 - поселок */ AND
    	`b`.`slider` = '0' /* указано, что не первый в слайдере! */
    	AND `a`.`stopflag` < 1
    ORDER BY RAND()
    LIMIT 0, 1");


    Попробуй вникнуть в смысл того что получается.
    Советую тебе крепко разобраться с этим вопросом, прям вникнуть, поскольку это тебе понадобится не то что часто а вообще каждый день.
    Сразу желательно без использования вот таких вещей как SELECT * и тд.
    ТО есть получать только те данные которые тебе нужны из неескольких таблиц а не собирать просто все таблицы в кучу.

    6361296a15eb7594616807.jpeg

    А вот тебе видео чтоб совсем не запутаться
    https://youtu.be/PTAkqURmI0s
    Ответ написан
  • Как сделать, чтобы изменения php.ini входили в силу?

    shambler81
    @shambler81 Куратор тега Linux
    Запусти phpinfo и посмотри какой реально используется ини файл.
    Вообще то вот лично у меня на сервере их окол 31 штуки.
    там как -бы для каждой версии и каждолго представления пхп отдлеьный. да и отдельно для каждого сайта можно назначить.
    Так что давай как посмотри какой реально ини используется там сразу вверху написано.
    Ответ написан
    Комментировать
  • Не работает php в apache2 ubuntu?

    ispconfig3 - 1 клик у тебя веб сервер с веб интерфейсом.
    aapanel - 1 клик у тебя веб сервер с веб интерфейсом.
    vestacp 1 клик у тебя веб сервер с веб интерфейсом.
    brainycp.com - 1 клик у тебя веб сервер с веб интерфейсом.
    Но ты решил пойти другим путем, понимаю...
    Ответ написан
    Комментировать
  • APACHE htaccess как вывести php текстом?

    <IfModule mod_mime.c>
            AddType text/plain .php .php3 .php4 .php5 .php6 .phtml .pl .asp .aspx .cgi .exe
    </IfModule>
    Ответ написан
    Комментировать
  • Как правильно составить регулярку для извлечение страны из домена?

    https://regex101.com/r/G5GaJX/1
    В примере сделана проверка на www ее просто исключаем.
    https://regex101.com/r/FYZx4q/1
    тут дополнительно проверяем что в конце наш основной домен

    https://regex101.com/r/dClrVg/1
    Объединяем оба правила и выделяем только "регион" как вы выразились
    Ответ написан
    Комментировать
  • Как сделать редирект get запросов в ЧПУ?

    shambler81
    @shambler81 Куратор тега htaccess
    GET не является частью урла и не попадает в RewriteRule
    RewriteCond %{QUERY_STRING} (?:^|&)q\=(.+)(?:$|&)
    RewriteRule ^site\.ru/index\.php$ /site.ru/%1? [L,R=301]
    Ответ написан
  • Как заменить урлы всех страниц в определенной категории на алиасы из базы данных?

    shambler81
    @shambler81 Куратор тега htaccess
    вам нужен ЧПУ
    вариантов миллион
    https://rio-shaman.ru/razrabotka-cms/uluchshenija/...?
    Ответ написан
    Комментировать
  • Не передается GET параметр с настройками htaccess?

    shambler81
    @shambler81 Куратор тега htaccess
    [L,QSA]
    QSA - сохраняет гет параметры.
    НЕ забывайте что с точки зрения mod_rewrite GET вообще не является частью урла и выделяется вообще через
    QUERY_STRING
    Опять же то что вы делаете похоже на кривую поделку ЧПУ
    Ответ написан
    Комментировать
  • Как убрать ошибку при установке PHP?

    на винду можно поставить уже готовое решение что-то вроде openserver или Денвер, вот смысл писать самодельные костыли на инвалидную ос ( рамках вбе разработки)
    Ответ написан
    Комментировать
  • Какие режимы работы PHP и Apache выбрать?

    Сверху вниз по производительности, дальше писать не стал
    nginx+fpm
    nginx+apache+PHP-FPM
    nginx+apache+FastCGI
    apache+PHP_FPM

    0_5f6d74b3e52860caf9d1a94b304a335a.png
    Ответ написан
  • Как в Битриксе настроить редирект ссылок без слеша в конце на с ним?

    shambler81
    @shambler81 Куратор тега htaccess
    Владислав Старцев,
    уже много раз вижу такую шляпу
    кто вообще придумал этот редирект ?
    RewriteCond %{REQUEST_URI} !\?
    ? - не может физически быть в %{REQUEST_URI} поскольку не является частью урла
    собственно как и RewriteCond %{REQUEST_URI} !\&
    & - выделяется через RewriteCond %{QUERY_STRING}
    По факту все что тут работает
    RewriteCond %{REQUEST_URI} !\=
    Если не =, но простите а причем тут равно ? Скорее всего тот "мастер" что придумал сей редирект думал о GET параметрах, но они как я и говорил выше не попадают в REQUEST_URI
    Если не точка, а простите причем тут точка ?
    И того 2 условия в принципе не выполнимы
    2 из них идиотские и не удовлетворяют тз

    Все что остается это предпоследнее не слеш в конце
    И сам реврайт рул.
    То есть из всего правила работает 10% остальные 90% это мусор идиота

    Теперь разберемся
    Как бы это должно было быть на самом деле
    Тут все сложнее поскольку есть пара условий в которых нельзя убирать слеш.
    RewriteCond %{REQUEST_URI} \..+$
       # Если файл содержит точку.
    RewriteCond %{REQUEST_FILENAME} !-d
       # И это не директория.
    RewriteCond %{REQUEST_FILENAME} -f
       # Является файлом.
    RewriteCond %{REQUEST_URI} ^(.+)/$
       # И в конце URL есть слеш.
    RewriteRule ^(.+)/$ /$1 [R=301,L]
       # Исключить слеш.


    Оданко не все так просто, сематнически правильно именно закрывать слешем
    НА СЕО не влияет ни то ни то, это 100% инфа, влияет отсутствие редиректов с одного на другое что может дать два урла.
    НО какой именно урл со слешем или нет, не влияет!

    НО семантически URL должне быть закрыт
    однако слеш после имени файла дает 404, если это просто файл.
    Так что нам нужно разделить реальные файлы и урлы созданые ЧПУ

    добавив вот такое правило.
    ############################################################################
    #### Добавляем слеш(/), если его нет, и это не файл.                    ####
    ############################################################################
    RewriteCond %{REQUEST_URI} !(.*)/$
       # Если слеша в конце нет.
    RewriteCond %{REQUEST_FILENAME} !-f
       # Не является файлом.
    RewriteCond %{REQUEST_URI} !\..+$
       # В URL нет точки (файл).
    RewriteCond %{REQUEST_URI} ^(.+)$
     # В URL есть хоть один символы
    RewriteRule ^(.*)$ $1/ [L,R=301]
       # Добавляем слеш в конце.


    И того сразу два правила, притом именно в такой последовательности должны быть в .htccess
    за врея работы я видил много горе СЕО специалистов рекоменующие вот такие шляпы, да и редиректы 90% которого не может сработать физически.
    так же часто видил удаление аперкейсов в урлах ( чего разумеется тоже делать нельзя)
    редиректы на хтмл мативируя тем что гугл думает что это статика и лучше их валидирует и тд и тп.
    Все это лечится одним, удалением этого сотрудника и наемом более квалифицированного сеошника, а не плавающего товарищя в анабиозе.
    Ответ написан
    6 комментариев
  • Как установить PHP 5.4 CentOS 7?

    shambler81
    @shambler81 Куратор тега Linux
    репозиториев нет ставь с тарболов в режиме php+fpm это сделать проще всего
    Вот так я ставил на дебиане, подправить нужно с учетом центоса.
    apt-get install -y libxslt-dev libcurl4-gnutls-dev libfcgi-dev libfcgi0ldbl libmcrypt-dev libssl-dev libxml2-dev zlib1g-dev libcurl4-gnutls-dev libjpeg-turbo8-dev libbz2-dev libjpeg-dev libfreetype6-dev libmcrypt-dev libcurl4-gnutls-dev
    apt-get install -y libpq-dev
    cd /usr/include
    cd /usr/local/include
    sudo ln -s /usr/include/x86_64-linux-gnu/curl curl
    mkdir /opt/php5.4.45
    mkdir /usr/local/src/php5
    cd /usr/local/src/php5
    wget http://de2.php.net/get/php-5.4.45.tar.gz/from/this/mirror
    mv mirror php-5.4.45.tar.gz
    tar -xzvf php-5.4.45.tar.gz
    cd php-5.4.45
    
    
    ./configure \
    --prefix=/opt/php5.4.45 \
    --with-pdo-pgsql \
    --with-zlib-dir \
    -with-freetype \
    --enable-mbstring \
    --with-libxml-dir=/usr \
    --enable-soap \
    --enable-calendar \
    --with-curl \
    --with-mcrypt \
    --with-zlib \
    --with-gd \
    --with-pgsql \
    --disable-rpath \
    --enable-inline-optimization \
    --with-bz2 \
    --with-zlib \
    --enable-sockets \
    --enable-sysvsem \
    --enable-sysvshm \
    --enable-pcntl \
    --enable-mbregex \
    --with-mhash \
    --enable-zip \
    --with-pcre-regex \
    --with-mysql \
    --with-pdo-mysql \
    --with-mysqli \
    --with-jpeg-dir=/usr \
    --with-png-dir=/usr \
    --enable-gd-native-ttf \
    --with-fpm-user=www-data \
    --with-fpm-group=www-data \
    --with-libdir=/lib/x86_64-linux-gnu \
    --enable-ftp \
    --with-kerberos \
    --with-gettext \
    --enable-fpm
    
    make
    make install
    
    cp /usr/local/src/php5/php-5.4.45/php.ini-production /opt/php5.4.45/lib/php.ini
    cp /opt/php5.4.45/etc/php-fpm.conf.default /opt/php5.4.45/etc/php-fpm.conf
    
    
    sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:8998/g' /opt/php5.4.45/etc/php-fpm.conf
    sed -i 's/\x3Bpid = run\/php-fpm.pid/pid = run\/php-fpm.pid/g' /opt/php5.4.45/etc/php-fpm.conf
    echo "include=/opt/php5.4.45/etc/pool.d/*.conf" >> /opt/php5.4.45/etc/php-fpm.conf
    
    mkdir /opt/php5.4.45/etc/pool.d
    vim /etc/init.d/php5.4.45-fpm  # вставляем конфиг, и правим версию пхп https://www.howtoforge.com/how-to-use-multiple-php-versions-php-fpm-and-fastcgi-with-ispconfig-3-ubuntu-12.10-p3
    chmod 755 /etc/init.d/php5.4.45-fpm
    #заменяем актуальной версией php,  плс название в общем стиле а не как по ману
    sed -i 's/php\-5\.4\.12/php5.4.45/g' /etc/init.d/php5.4.45-fpm
    
    update-rc.d php5.4.45-fpm defaults 
    /etc/init.d/php5.4.45-fpm start
    update-rc.d php7.3-fpm defaults
    apt-get install libmemcached-dev
    
    # исправит проблему подключения по loalhost поскольку в  стандартных php.ini она вообще не обьявлена
    echo "mysqli.default_socket = /var/run/mysqld/mysqld.sock" >> /opt/php5.4.45/lib/php.ini
    echo "mysqli.default_socket = /var/run/mysqld/mysqld.sock" >> /opt/php5.4.45/lib/php.ini
    /etc/init.d/php5.4.45-fpm restart
    /etc/init.d/apache2 restart
    Ответ написан
    Комментировать