У меня есть подпапка с двумя файлами. Первый – email.php, с формой, которую пользователь может отправить мне по электронной почте. Он также имеет скрытый код для предотвращения спама и использует переменные $_SESSION[foo]
. Второй – upload.php, который позволяет зарегистрированным пользователям загружать файлы. Оба файла работали нормально. Теперь мне нужно увеличить upload_max_filesize из базы 2MB для upload.php. Мой хост не предоставляет доступ к основному php.ini, но рекомендуется создать собственный файл php.ini в этой подпапке. Поэтому я создал:
php.ini
upload_max_filesize = 10M ; post_max_size = 10M ;
Я теперь получаю ошибки Warning: include() [function.include]: Filename cannot be empty
и Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php')
когда я отправляю форму / captcha по адресу email.php.
$_SESSION[foo]=$_GET[bar]; else $_SESSION[foo]="foobar.php"; include($_SESSION['foo']);
Я обнаружил, что $_SESSION[foo]
пуст даже с else
. После некоторого исследования я обнаружил, что когда я запускал phpinfo()
, для session.save_path
было no value
(оригинал был / tmp). А сейчас
php.ini
upload_max_filesize = 10M ; post_max_size = 10M ; session.save_path = /home/foobar/tmp ;
Но я все еще получаю ошибку. Если я удалю файл php.ini из этой папки, то скрипт формы на email.php работает нормально, но я вернулся к upload_max_filesize
= 2MB для upload.php. Любая помощь будет оценена по достоинству.
Это проблема с настройками CGI PHP, где директивы сервера php.ini
не каскадируются в пользовательские конфигурации.
Я много писал об этом здесь – http://blog.philipbrown.id.au/2009/08/php-suexec-and-custom-php-ini-files/
$ _SESSION [Foo] = $ _ GET [бар]; else $ _SESSION [foo] = "foobar.php"; включают ($ _ SESSION [ 'Foo']);
Я немного смущен этим фрагментом. Он не только недействителен (нет, if
оператор, индексы массива не цитируются), но очень небезопасен.