- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
После переноса сайтов на VDS перестал работать скрипт, забирающий с другого сервера рандомную ссылку.
Строчка:
$fh = fsockopen("****.ru",80, &$errno, &$errstr, 2);
порождает ошибку:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/espada/data/www/*****.info/skvo.php on line 10
Подскажите, пожалуйста, что с этим делать?
php_flag allow_call_time_reference on в .htaccess я уже испробовал. Ошибка исчезает, но ссылка не появляется (хотя в локале тот же скрипт работает нормально и с таким .htaccess и без него).
Сейчас ищу PHP.ini (кстати, подскажите, плиз, где он находится, если зайти в файл-менеджер ISPManager, как root). Но, боюсь, и там смена настройки не поможет.
Сейчас ищу PHP.ini (кстати, подскажите, плиз, где он находится, если зайти в файл-менеджер ISPManager, как root). Но, боюсь, и там смена настройки не поможет.
php.ini находится в корне PHP, еще можно попробовать добавить в скрипт строчку:
php.ini находится в корне PHP
В таком случае, где находится корень PHP? В корневой папке рута нет ни php.ini, ни папки php.
К примеру, у меня на локальной машине php.ini лежит в usr/local/php. Но на сервере и в usr/local такой папки нету.
Впрочем, боюсь, это не поможет - поскольку не помогает ни .htaccess, ни ini_set. Где-то что-то сложнее.
В таком случае, где находится корень PHP? В корневой папке рута нет ни php.ini, ни папки php.
К примеру, у меня на локальной машине php.ini лежит в usr/local/php. Но на сервере и в usr/local такой папки нету.
Впрочем, боюсь, это не поможет - поскольку не помогает ни .htaccess, ни ini_set. Где-то что-то сложнее.
Создайте скрипт в корне сайта, например, phpinfo.php и пропишите в нем одну строчку:
<?php phpinfo();
Вызовите его и в первой секции увидите путь к php.ini (Loaded Configuration File). Но вообще-то вызов fsockopen правильно вызывать без использования знака & (кстати, тогда и включать опцию allow_call_time_pass_reference не потребуется):
$fh = fsockopen("****.ru", 80, $errno, $errstr, 2);
и, в качестве отладки, добавьте после этой строчки:
var_dump($fh);
var_dump($errstr);
Может это даст дополнительную информацию, установлено ли соединение. Но одной строчки для того, чтобы сказать где може быть ошибка, малова-то будет...
$fh = fsockopen("****.ru",80, &$errno, &$errstr, 2);
порождает ошибку:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in /var/www/espada/data/www/*****.info/skvo.php on line 10
Подскажите, пожалуйста, что с этим делать?
- тут все написано :) "уберите передачу по ссылке":
Передлагаю свой помош.
Проблема оказалась не в этой строчке, а совсем в другой.
Оказалось, что новый сервер почему-то не распознает $HTTP_SERVER_VARS['REQUEST_URI'] и признает только $_SERVER['REQUEST_URI']. Кстати, интересно - это нормально для настроенных по умолчанию серверов на PHP5?
То есть установка allow_call_time_reference в ON устраняла ошибку fsockopen, но скрипт все равно не работал из-за отсутствия нужного параметра, который берется из REQUEST_URI.
Беда в том, что скрипт чужой, вставлен на мои сайты как есть и написан в непривычном для меня стиле. В своих скриптах я и fsockopen никогда не пользуюсь (предпочитаю file_get_contents) и HTTP_SERVER_VARS никогда не применял - вот и не разобрался сразу.
Спасибо всем за помощь.
да. Я всегда использую $_SERVER
Оказалось, что новый сервер почему-то не распознает $HTTP_SERVER_VARS['REQUEST_URI'] и признает только $_SERVER['REQUEST_URI']. Кстати, интересно - это нормально для настроенных по умолчанию серверов на PHP5?
Да, это нормально. Более того, использование $HTTP_SERVER_VARS (и аналогичных массивов) не рекомендуется использовать начиная с версии 4.1.0 (декабрь 2001 года).