Jump to content

gebeer

Members
  • Posts

    1,559
  • Joined

  • Last visited

  • Days Won

    49

Everything posted by gebeer

  1. You can make URLs to PDFs look nicer Further up in that thread, you can see how you can implement output.
  2. I moved from Joomla/Seblod to ProcessWire about 10 years ago. It was the best decision I ever made in my developer life. Happy coding with PW :-)
  3. Installation went smoothly with 3.1.0. Thank you!
  4. Hi @bernhardjust installed a brandnew PW with https://github.com/processwire/site-regular/blob/main/README.md site profile on a local ddev with PHP 8.1. First thing I wanted to install was RockMigrations. After going to Modules->Site->Add New and pasting in the class name and clicking on Get Module Info, I got an exception: DEBUG MODE BACKTRACE ($config->debug == true): #0 /var/www/html/wire/core/Modules.php(688): ProcessWire\ProcessPageEditImageSelect->init() #1 /var/www/html/wire/core/Modules.php(1455): ProcessWire\Modules->initModule(Object(ProcessWire\ProcessPageEditImageSelect), Array) #2 /var/www/html/wire/core/Modules.php(1262): ProcessWire\Modules->getModule('ProcessPageEdit...') #3 /var/www/html/wire/core/Modules.php(1712): ProcessWire\Modules->get('ProcessPageEdit...') #4 /var/www/html/wire/core/WireArray.php(1789): ProcessWire\Modules->find('alsosetincompos...') #5 /var/www/html/wire/core/WireArray.php(583): ProcessWire\WireArray->findOne('alsosetincompos...') #6 /var/www/html/wire/core/Modules.php(1913): ProcessWire\WireArray->get('alsosetincompos...') #7 /var/www/html/wire/modules/Process/ProcessModule/ProcessModule.module(1166): ProcessWire\Modules->isInstalled('alsosetincompos...') #8 /var/www/html/wire/core/Wire.php(419): ProcessWire\ProcessModule->___buildDownloadConfirmForm(Array, false) #9 /var/www/html/wire/core/WireHooks.php(952): ProcessWire\Wire->_callMethod('___buildDownloa...', Array) #10 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\ProcessModule), 'buildDownloadCo...', Array) #11 /var/www/html/wire/modules/Process/ProcessModule/ProcessModule.module(1080): ProcessWire\Wire->__call('buildDownloadCo...', Array) #12 /var/www/html/wire/modules/Process/ProcessModule/ProcessModule.module(340): ProcessWire\ProcessModule->downloadConfirm('RockMigrations') #13 /var/www/html/wire/core/Wire.php(413): ProcessWire\ProcessModule->___execute() #14 /var/www/html/wire/core/WireHooks.php(952): ProcessWire\Wire->_callMethod('___execute', Array) #15 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\ProcessModule), 'execute', Array) #16 /var/www/html/wire/core/ProcessController.php(350): ProcessWire\Wire->__call('execute', Array) #17 /var/www/html/wire/core/Wire.php(413): ProcessWire\ProcessController->___execute() #18 /var/www/html/wire/core/WireHooks.php(952): ProcessWire\Wire->_callMethod('___execute', Array) #19 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\ProcessController), 'execute', Array) #20 /var/www/html/wire/core/admin.php(160): ProcessWire\Wire->__call('execute', Array) #21 /var/www/html/site/templates/admin.php(16): require('/var/www/html/w...') #22 /var/www/html/wire/core/TemplateFile.php(328): require('/var/www/html/s...') #23 /var/www/html/wire/core/Wire.php(413): ProcessWire\TemplateFile->___render() #24 /var/www/html/wire/core/WireHooks.php(952): ProcessWire\Wire->_callMethod('___render', Array) #25 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\TemplateFile), 'render', Array) #26 /var/www/html/wire/modules/PageRender.module(575): ProcessWire\Wire->__call('render', Array) #27 /var/www/html/wire/core/Wire.php(416): ProcessWire\PageRender->___renderPage(Object(ProcessWire\HookEvent)) #28 /var/www/html/wire/core/WireHooks.php(952): ProcessWire\Wire->_callMethod('___renderPage', Array) #29 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\PageRender), 'renderPage', Array) #30 /var/www/html/wire/core/WireHooks.php(1060): ProcessWire\Wire->__call('renderPage', Array) #31 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\Page), 'render', Array) #32 /var/www/html/wire/modules/Process/ProcessPageView.module(184): ProcessWire\Wire->__call('render', Array) #33 /var/www/html/wire/modules/Process/ProcessPageView.module(114): ProcessWire\ProcessPageView->renderPage(Object(ProcessWire\Page), Object(ProcessWire\PagesRequest)) #34 /var/www/html/wire/core/Wire.php(416): ProcessWire\ProcessPageView->___execute(true) #35 /var/www/html/wire/core/WireHooks.php(952): ProcessWire\Wire->_callMethod('___execute', Array) #36 /var/www/html/wire/core/Wire.php(484): ProcessWire\WireHooks->runHooks(Object(ProcessWire\ProcessPageView), 'execute', Array) #37 /var/www/html/index.php(55): ProcessWire\Wire->__call('execute', Array) #38 {main} Other module installs I tested (ProcessWireUpgrade, ProcessDatabaseBackups), went fine. Don't know if this is related to the site profile or your module. Just wanted to let you know.
  5. Rollbar can be initiated without setting it's own error handler. https://docs.rollbar.com/docs/basic-php-installation-setup But thanks for your concern.
  6. Don't think that many people will have a need for this. But would be nice for sure ? Reason why I need a separate module is also that it should be independent of other modules (aka TD). I am using Tracy on every install. But not all devs do that and the agency I am freelancing for would like to have it as a standalone tool.
  7. Hi, bringing this up again because I found the reason. On install of MM, the children under Admin->MediaManager got named "media-manager--image", --audio etc. No idea how this happended, though. Guess I will rename them manually. Since on upload the parent is defined by those page names, no parent is defined and all media gets saved under Media Manage:Audio. A check in MediaManagerActions.php around L1575 for $parent instancof NullPage or the like would be great to at least issue a warning. Consequently the checks for duplicates on upload did not work. This is how I discovered the root cause.
  8. @adrian Thank you for all the info. That will help a lot. will look through your code where Tracy gets started up. That should give me good pointers. Rollbar also uses set_error_handler. Their docs say to init Rollbar at the entry point of the application. I'll find the right place to do this. Great pointer. I need this as a standalone module because we want to have different targets to report to based on error levels.. But once I have that, we can add an option to Tracy as well. Thanks again for all those useful links.
  9. Thanks again @flydev I am still investigating this. In wire/core/Wire.php there is a hookable method trackException. This seems to be a good place to hook into for errors/exceptions. But for Warnings I'm still not 100% sure how to them. To me it seems like WireLog is only taking care of 'error' and 'exception'. Notices has a NoticeWarning class. That looks promising but they seem to only get logged when in debug mode. I will experiment with those findings. FYI: The module I am planning to build will most likely include an option to send errors to https://rollbar.com/ using https://docs.rollbar.com/docs/basic-php-installation-setup. But also an option to just email them to configurable addresses.
  10. Hi @adrian Tracy is acting on all Errors/Exceptions (and in strict mode also Warnings) while it is active. May I ask how your module achieves that? This question is related to Basically I want to catch all Errors/Exceptions (+ Warnings, if possible) and act upon them. And I'm struggling in finding a clever way to do so. In your module I see a hook to 'ProcessWire::trackException'. Would this be a good place to start for Exceptions? But what about Warnings? For example, if I wanted to use an external service for error reporting like https://docs.rollbar.com/docs/basic-php-installation-setup, where would I intercept PW Errors to init my custom error handler?
  11. This might be helpful: https://korepov.pro/infobase/vs-code/23 Haven't tried it myself but looks promising.
  12. Update: When I measured CPU and MEM usage, I used Linux top command. I just discovered that you need to switch the mode to correctly display multi-core CPU percentage ? https://unix.stackexchange.com/questions/34435/top-output-cpu-usage-100 After switching to Solaris mode the numbers look much better with around 100 open sessions ? mysqld: 0.1% php-fpm: 0.1%
  13. Thanks for the input! File-Cache you mean then? Because https://processwire.com/api/ref/wire-cache/ is DB driven, I think.
  14. Hi all, I'm currently working on a PW app that is expected to get a lot of traffic for a few days. Peak will be around 5000 requests/second. The app is hosted on a virtuel server within the client's network and has some quite impressive specs: - 32 core CPUs - 80 GB RAM Now I am wodering if the server will be able to handle high loads. ATM we have around 100 open sessions per second and mysqld process is already spiking around 10% and php-fpm around 2-5%. We did load tests with 5000 virtual users through https://loadforge.com/ and the server is starting to produce hangs at only around 50 requests/second. On the code side there is nothing really special. No expensive queries that I am aware of. Caching is not really an option because frontend views mostly depend on frequently changing data and most views have form submissions. There is one dashboard view with long polling XHR requests for JSON data. This data can also not be cached because it changes frequently so I think permamnently updating cache on data changes would be equally expensive as just not caching it. Unfortunately we have no server monitoring tools at our disposal. But I would think that a server with these specs should be able to easily handle hundreds of requests/s. The IT responsivle for the server do not seem to have a lot of experience with LAMP stack web servers. So I'm concerned there might be some MySQL missconfigurations. Anyways, if any of you have experience with high load PW apps, please share your expertise ?
  15. It is odd that modern browsers do not support email validation following RFC 6530 out of the box. Popular PHP/JS libs like https://github.com/egulias/EmailValidator and https://www.npmjs.com/package/isemail/v/3.2.0 do support it. Seems like we would have to come up with a custom email input JS validator to make this work in the GUI. That is certainly something that @ryan would have to implement. Not sure how other CMS/Frameworks support this feature. But would be awesome if ProcessWire did.
  16. Sorry if I was rude. I apologize. Had a bad day yesterday... From your other thread about Apache and suExec configuration it seems that most of the session stuff might also be user/permission related.
  17. Session on the client side are stored in cookies. You can use your browser's dev tools to inspect those. HOw that happened, no idea. To confirm that SessionHandlerDB module is installed you can go to Modules->Core. If you see Session Handler Database listed with a green Settings Button, then it is installed. In the page tree under Admin->setup there should be a page "Sessions" When you edit that page, under Process there needs to be ProcessSessionDB set Same goes for Admin->Access->Sessions. If this is the case then you should be able to see the sessions when you go to either Setup->Sessions or Access->Sessions. The entries there have nothing to do with your session variables. If you don't have SessionHandlerDB module installed, they are stored in site/assets/sessions. Also there, your session variables will not be stored. No. The storage location of sessions (file system or DB) does not have anything to do with your script. See my answer in your other thread. On a side note, it would be better to keep this in one thread since it is the same underlying problem. Posting 4 different threads about 1 problem does not help and could be considered as spam. This tells me that something with your script might be wrong, not with how PW handles sessions.
  18. I don't think a PHP update can have an impact on folder permissions. More likely this is an Apache and/or PHP-FPM missconfiguration issue. File/Folder permissions are documented here https://processwire.com/docs/security/file-permissions/
  19. That is not true anymore since 3.0.208. Docs for https://processwire.com/api/ref/sanitizer/email/ options say: I have verified that sanitizer accepts with the allowIDN option set to 2. $sanitizer->email('hans.müller@müller.com', ['allowIDN' => 2]; But the occurences of $sanitizer->email() in InputfieldEmail.module and FieldtypeEmail.module need to be adjusted to allow saving of those values to the DB. We are working on an app for an international corporation and need to import around 15.000 email addresses, some of which have characters like ä, ø etc. Their mailservers support these, so we have to support them also. I'm totally not into reading RFCs, but doing some research I found that since RFC6532 (2012) internationalized email headers are a standard and even the local part of the email can be in UTF-8. For anyone who wants to dig deeper, here are some links to get you started: https://stackoverflow.com/questions/69855149/email-with-special-characters-rejected-rfc-6532-and-quoted-printable https://github.com/roundcube/roundcubemail/issues/5120 https://www.rfc-editor.org/rfc/rfc6532
  20. Hi all, I'm on PW 3.0.209 and cannot save international Email strings (like "hans.müller@müller.com") to email fields through the GUI and also not through the API. Since 3.0.208 $sanitizer->email supports IDN with option "allowIDN". But the accepted values cannot be saved. As far as I can see from the code, this also applies to latest dev version. Can anyone confirm this behaviour? I opened an issue request with a proposed fix for the API side of things https://github.com/processwire/processwire-issues/issues/1680
  21. I totally agree and would have expected RM to work like that. No use for a module-related migration if the module is not installed.
  22. Are you using MJML for compiling your email HTML. You can compile theam as .php files. Is it a namespace issue, do you have namespace ProcessWire in those email HTML files?
  23. Can you rename the include file to .php? Then PW should pick it up for translation.
  24. Have you tried $body=$files->render('path/to/my/mail-template.html''); ? Are your files namespaced?
  25. I found the reason. It works if you only have 1 repeater matrix field. If you have multiple, you need to pass the field object as 2nd parameter: $field = $fields->get('content_product'); $repeaterMatrix = $modules->get('FieldtypeRepeaterMatrix'); $typeId = $repeaterMatrix->getMatrixTypeByName('teaser_gallery', $field); Same goes for $repeaterMatrix->getMatrixTypeLabel(string 'typename', Field $field)
×
×
  • Create New...