Могу ли я использовать любые другие теги CF для замены CFDUMP?
В разработанном мною приложении я назвал одну из своих веб-страниц "error.cfm". Я хочу, чтобы он отображался всякий раз, когда в приложении возникает ошибка. Поэтому я поместил следующий код внутри "error.cfm":
An uncaught exception just 'happened' :-(
<br><br>
<b><cfoutput>#exception.message#</cfoutput></b><br />
<cfoutput>#exception.detail#</cfoutput><br /><br />
<cfif isdefined('exception.cause')>
<b><cfoutput>#exception.cause.message#</cfoutput></b><br />
<cfoutput>#exception.cause.detail#</cfoutput>
</cfif>
<cfdump var="#exception#">
Поэтому после размещения веб-сайта я обнаружил, что эта конкретная страница отказалась загружаться, и вместо этого было отображено "500 Internal Error". Затем я пожаловался в свою хостинговую компанию, и мне прислали следующие данные:
Уважаемый клиент,
Фактическое сообщение об ошибке следующее:
Безопасность: Запрошенному шаблону было отказано в доступе к createobject(java).
Ниже приводится внутреннее сообщение об исключении: доступ запрещен (coldfusion.runtime.FunctionPermission createobject(java))Ошибка произошла в C:\inetpub\vhosts\plat4ad.com\httpdocs\cms\error.cfm: строка 10
8: 9: 10:
К сожалению, некоторые теги и функции отключены на наших серверах в целях безопасности. Вы можете проверить полный список здесь:
https://support.dailyrazor.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=293&nav=0,29,76
Пожалуйста, дайте нам знать, если у вас есть другие вопросы.
С наилучшими пожеланиями, Support-GG DailyRazor Support Team.
Теперь проверяем списки тегов, которые они отключили на своих серверах, CFDUMP
был среди них:
На общих серверах ColdFusion у вас будет доступ ко всем тегам и функциям, кроме следующих:
CF Метки:
- CFCOLLECTION
- CFCONTENT
- CFDUMP
- CFEXECUTE
- CFLOG
- CFOBJECT
- CFOBJECTCACHE
- CFREGISTRY
Функции CF:
- SetProfileString
- CreateObject (СОМ)
- CreateObject (CORBA)
- CreateObject (JAVA)
Пожалуйста, есть ли альтернатива для CFDUMP
? Или кто-нибудь знает какую-либо хостинговую компанию ColdFusion, у которой нет этих ограничений? Я ценю любые идеи от вас.
4 ответа
Если вы получите себе VPS (google:coldfusion VPS), вы сможете делать на этой машине все, что захотите.
Весь смысл отсутствия cdump
это мера безопасности. Обычно вся отладка и вывод необработанных данных выполняется на сервере разработки, а на размещенном сервере вы запускаете приложения, верно? Error.cfm
используется для сокрытия сведений об обнаруженных исключениях, таких как путь к файлам, данные об используемых библиотеках и т. д.
Есть способы отображения данных без cfdump
, В вашем случае я не понимаю, почему вы не могли использовать обычную cfoutput
и запишите детали исключения как 2 строки вывода.
На вашем месте я бы взял исходные коды fw/1 или Mura CMS, чтобы увидеть, как они обрабатывают сообщения об ошибках, лучше посмотреть, как это делают опытные люди, а затем "тратить" время на повторное изобретение колеса.
Я добавлю, что если вы решите "сбросить" детали, вы также можете обернуть код дампа в блок "если", который просматривает ваш cgi.REMOTE_ADDR и, если он соответствует вашему IP-адресу, выполняет сброс, в противном случае - нет.
<cfif cgi.REMOTE_ADDR EQ "167.96.177.66">
<!--- execute dump code here --->
</cfif>
Предостережения: YMMV, должен иметь статический IP, должен быть на этом IP и т. Д.
CFDUMP начал свою жизнь как пользовательский тег еще до того, как он был включен в ColdFusion.
По-прежнему его можно загрузить: http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1002037
Возможно, вам придется внести изменения в него, чтобы он работал (лучше) в более современных версиях CF, но, вероятно, он должен делать более 90 процентов того, для чего он вам нужен.