Подібна помилка почала з'являтися при переході на версію PHP 5.3, в якій заборонений виклик функції з параметром - константою, якщо функція очікує на цьому місці посилання на змінну.
Наведу простий приклад. Скажімо, у нас є функція, яка очікує посилання на змінну $ b:
Якщо ми будемо викликати цю функцію, підставляючи на місце другого параметра фіксоване значення (константу), то отримаємо помилку Strict Standards: Only variables should be passed by in ...:
Для того, щоб усунути цю помилку, не змінюючи логіку програми, необхідно замінити параметр 5 на змінну, рівну цьому значенню:
У цьому випадку все вірно - функція отримає посилання на змінну і ніякого порушення стандартів не відбудеться.
Інша поширена причина виникнення подібної помилки - це передача на вхід функцій, що вимагають покажчика на змінну, результату виконання іншої функції. Ось приклад:
В даному випадку ми бачимо як результат роботи функції explode () передається безпосередньо як параметр у функцію end (). Але функція end () працює з покажчиком на масив, а не зі значенням масиву. Тому тут також буде виведена помилка.
Рішення таке ж як і в попередньому випадку:
Тобто спершу ми переносимо значення в справжню змінну, і тільки потім передаємо в end () покажчик на цю змінну.
Власне все помилки подібного роду вирішуються саме таким чином. Якщо у вашій програмі десь стала вилітати вищевказана помилка, то просто створюйте тимчасову змінну там, де помилково передається константа.